1
是否可以阻止从boost.signals库中的信号中删除某些插槽?
如果是的话,做这样的事情的代码应该怎么样?我是否需要为特定信号创建派生类才能这样做?如何防止从某个信号中删除插槽?
是否可以阻止从boost.signals库中的信号中删除某些插槽?
如果是的话,做这样的事情的代码应该怎么样?我是否需要为特定信号创建派生类才能这样做?如何防止从某个信号中删除插槽?
提供您自己的无法返回连接的插槽连接功能。没有连接,客户端无法打破它。
编辑:代码例如:
struct my_class
{
boost::signals::connection listen_event1(boost::function<void (my_class const&)> const& f)
{
return signal1.connect(f);
}
void listen_event2(boost::function<void my_class const&)> const& f)
{
signal2.connect(f);
}
private:
typedef boost::signals::signal<void(my_class const&)> sig_t;
sig_t signal1;
sig_t signal2;
};
SIGNAL2连接不能被断开。
你的意思是说我的信号会是一个特殊的信号,它会导出原来的信号?它会有两个连接功能吗?一个接受可拆卸连接,另一个接受不可拆卸连接?或者你的意思是我应该提供一个连接但不返回连接的函数?我如何重载返回类型? – 2010-06-01 16:13:15
否。希望你不公开你的信号对象,对吧?你在课堂上有一些功能可以产生信号,让你可以连接它们。只是不要返回你用来实现该信号的信号对象返回的boost :: signals :: connection对象。 – 2010-06-01 16:17:55
我正在通过getter公开这些信号。我已经在http://www.webtoolkit.eu(Wt) – 2010-06-01 16:19:45