我有以下的情況,(在代碼更好)C++成員函數的指針,升壓::信號
class Foo
{
private:
typedef boost::signal<void()> Signal;
Signal signal;
public:
void Register_SignalFunction(const Signal::slot_type& slot);
void Unregister_SignalFunction(const Signal::slog_type& slot);
}
class OtherFoo
{
Foo foo;
public:
OtherFoo()
{
foo.Register_SignalFunction(&OnSignal) //I know I can't do this that is precisely my question.
}
void OnSignal(); //what to do when signal fires
}
所以,問題是,如何通過一個「成員函數」指針寄存器的方法。另外,這是好嗎?我想/需要的是某種委託註冊系統,所以如果任何人都無法指出我的方向,我會很感激。提前Thanx。
每當我嘗試做一些類似foo我得到這個錯誤。Register_SignalFunction(boost :: bind(&OtherFoo :: OnSignal,this));錯誤C2678:二進制'==':找不到操作符找到類型爲'const boost :: slot'的左手操作數是不可接受的轉換)\t f:\ development \ boost_1_41_0 \ boost \ function_equal.hpp Indigen_Framework –
Yoss
@Yoss:我認爲你的Signal typedef必須是公開的。除此之外,請發佈一個最小的可編譯示例。您當前的代碼中存在拼寫錯誤,例如Signal :: slog_type ... –