对不起,如果这个问题非常有根据。我无法以某种方式将模板实现的一个简单示例代码视为Boost.signals ,例如:
boost::signal<void ()> sig;
我所知道的是以下内容:
template <class T>
TemplateClass {
T t;
};
TemplateClass<int> a;
请提供一些关于它的指针?
对不起,如果这个问题非常有根据。我无法以某种方式将模板实现的一个简单示例代码视为Boost.signals ,例如:
boost::signal<void ()> sig;
我所知道的是以下内容:
template <class T>
TemplateClass {
T t;
};
TemplateClass<int> a;
请提供一些关于它的指针?
不确定问题是什么,但增强信号的问题是您创建了一个发布者/订阅者系统,以便您可以将事件发送给感兴趣的各方。
声明 -boost::signal sig;- 是一个简单的模板,就像您在它下面列出的模板一样,但类型是函数签名(不要与函数指针混淆)。然后订阅者可以提供带有该签名的回调。
这是一个简单的 hello world 示例:
http://www.boost.org/doc/libs/1_51_0/doc/html/signals/tutorial.html#id3193274
希望有帮助
你想如何创建 boost::signals2::signal 之类的模板参数吗?实施示例在这里:
#include <tuple>
template <class Signature>
class TemplateClass; // declaration only
template <class R, class... Args>
class TemplateClass<R(Args...)> { // partial specialization as function like signature
public:
typedef R result_type;
typedef std::tuple<Args...> arg_types;
R operator()(const Args&... args)
{
return invoke_function(args...);
}
};
int main()
{
TemplateClass<void(int, double)> x;
x(1, 3.14);
}