我想使用boost :: function将回调作为参数传递,就像这样:
void ReadPacket(
boost::function<void (const boost::system::error_code&, Packet* p)> callback);
然后使用它:
ReadPacket(boost::bind(
&ServerSession::storePacket,
this,
_1,
_2
));
毕竟在一连串回调后我打电话
callback(ec, packet);
我刚刚在调试中编译了解决方案,所有内容看起来都是确定 ......
但是发布我上面提到了很多错误
BasicSession.h(30): error C2039: 'function' : is not a member of 'boost'
BasicSession.h(30): error C2061: syntax error : identifier 'function'
BasicSession.h(30): error C2059: syntax error : ')'
BasicSession.h(30): error C2143: syntax error : missing ')' before ';'
我很困惑,也很失望。
我发现boost::function
中有不同的语法。例如boost::function0
或boost::function1
。这是因为VS2010不支持某些东西(我不知道到底是什么)
我是对的吗?
我还需要尽可能使这个应用程序成为可移植和跨平台的。
提升1.47和VS2010
答案 0 :(得分:3)
万一你错过了它,这里是tutorial升压功能。如果你看一下教程,它将列出'首选'和'可移植'语法。由于您希望代码可移植,因此您可能希望选择后者。
答案 1 :(得分:2)
解决方案是boost::function4