2010-06-01 32 views

回答

1

提供您自己的无法返回连接的插槽连接功能。没有连接,客户端无法打破它。

编辑:代码例如:

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连接不能被断开。

+0

你的意思是说我的信号会是一个特殊的信号,它会导出原来的信号?它会有两个连接功能吗?一个接受可拆卸连接,另一个接受不可拆卸连接?或者你的意思是我应该提供一个连接但不返回连接的函数?我如何重载返回类型? – 2010-06-01 16:13:15

+0

否。希望你不公开你的信号对象,对吧?你在课堂上有一些功能可以产生信号,让你可以连接它们。只是不要返回你用来实现该信号的信号对象返回的boost :: signals :: connection对象。 – 2010-06-01 16:17:55

+0

我正在通过getter公开这些信号。我已经在http://www.webtoolkit.eu(Wt) – 2010-06-01 16:19:45