Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost::带模板的信号槽类型_C++_Boost_Boost Signals - Fatal编程技术网

C++ boost::带模板的信号槽类型

C++ boost::带模板的信号槽类型,c++,boost,boost-signals,C++,Boost,Boost Signals,为以下函数生成时,我遇到生成错误: 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 conne

为以下函数生成时,我遇到生成错误:

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)

但这只会产生另一个错误。

告诉编译器它是一个具有typename的类型:


问题是signal\u t取决于模板参数t,因此您需要明确地告诉编译器signal\u t::slot\u type将是一个类型。

告诉编译器它是一个具有typename的类型:


问题是signal\u t取决于模板参数t,因此您需要明确地告诉编译器signal\u t::slot\u type将成为一个类型。

在其中的某个地方粘贴一个“typename”关键字-通常会有帮助;在那里的某个地方粘贴一个“typename”关键字——通常会有帮助;
connection_t connect(typename signal_t::slot_type subscriber){
    return signal.connect(subscriber);
}