Jon*_*oss 5 c++ boost bind function signature
我正在使用第三方库,允许我为某些事件注册回调.寄存器功能看起来像这样.它使用Callback签名.
typedef int (*Callback)(std::string);
void registerCallback(Callback pCallback) {
//it gets registered
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想将一个成员函数注册为这样的回调
struct MyStruct {
MyStruct();
int myCallback(std::string str);
};
MyStruct::MyStruct() {
registerCallback(&MyStruct::myCallback);
}
int MyStruct::myCallback(std::string str) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,编译器抱怨说
错误C2664:'registerCallback':无法将参数1从'int(__thiscall MyStruct ::*)(std :: string)'转换为'Callback'
我一直在寻找像函数和绑定这样的boost库,但是这些都没有能够做到这一点.我一直在谷歌寻找答案,但我甚至不知道该怎么称呼它,所以它没有多大帮助.
提前致谢.
您正在尝试将成员函数指针作为普通函数指针传递,这将无法正常工作.成员函数必须将this指针作为隐藏参数之一,而普通函数则不然,因此它们的类型不兼容.
您可以:
static)std::string像boost一样的东西bind来绑定前两个参数std::function(我认为这是名称)| 归档时间: |
|
| 查看次数: |
6229 次 |
| 最近记录: |