boost :: signal slot_type с шаблоном

Я получаю ошибку сборки при сборке для следующей функции:

template <class T> class Event {
public:
typedef boost::signal<void (void*, const T)>    signal_t;
typedef boost::signals::connection              connection_t;

public:
Event() { }

connection_t connect(signal_t::slot_type subscriber){
return signal.connect(subscriber);
}
}

ошибка:

error: 'class boost::signal<void ()(void*, T), boost::last_value<typename boost::function_traits<void ()(void*, T)>::result_type>, int, std::less<int>, boost::function<void ()(void*, T)> >::slot_type' is not a type

Я верю, что это как-то связано с тем, что это шаблонно, но я не уверен, как это исправить. Я попытался добавить, что

connection_t connect(signal_t::slot_type<T> subscriber)

Но это просто производит другую ошибку.

1

Решение

Скажите компилятору, что это тип с typename:

connection_t connect(typename signal_t::slot_type subscriber){
return signal.connect(subscriber);
}

Проблема в том, что signal_t зависит от параметра шаблона Tи поэтому вам нужно явно указать компилятору, что signal_t::slot_type будет типом.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]