0
我想使用boost ::綁定,以允許特定回調參數存儲的任意回調函數的列表:如何指定一個C++函數指針可以接受的boost :: bind'ed功能
例如:
void callback1(int something) {...}
void callback2(int onething,theotherthing) {...}
回調系統存儲這些在容器中:
typedef void (*lpvFunc)();
// ...
std::map <int,lpvFunc>regged_callbacks;
和在某些點上登記功能:
registerCallback(int slot,lpvFunc cb) { regged_callbacks[slot]=cb; }
當我嘗試做綁定,以適應回調
registerCallback(1,boost::bind(callback2,42,31337));
和shazbang我得到這樣的編譯器錯誤出現問題: ...注:從「提升爲參數2沒有已知的轉換: :_bi :: bind_t>''到'lpvFunc {aka void(*)()}'|
所以我怎麼修復,使這項工作(因爲升壓:: ASIO似乎能夠接受這樣的事情就好在它的指針回調)
什麼,因爲GCC的這種升壓形式4.7.1(mingw)還沒有完全運行C++ 11的支持? boost :: function? – 2014-11-14 15:45:14
是的,你可能想要的是'boost :: function' – YoungJohn 2014-11-14 15:53:34
@BrianJack:你的編譯器當然支持'std :: function',即使它的整體C++ 11支持不完全。多年來我一直在GCC 4.6中使用它們。 – 2014-11-14 16:05:49