VS2010中的boost :: function:错误C2039:'function':不是'boost'的成员

时间:2011-11-17 16:35:23

标签: c++ visual-studio-2010 boost boost-function

INFO

我想使用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 ';'

我很困惑,也很失望。

SUGGESTION

我发现boost::function中有不同的语法。例如boost::function0boost::function1。这是因为VS2010不支持某些东西(我不知道到底是什么)

我是对的吗?

我还需要尽可能使这个应用程序成为可移植和跨平台的。

提升1.47和VS2010

2 个答案:

答案 0 :(得分:3)

万一你错过了它,这里是tutorial升压功能。如果你看一下教程,它将列出'首选'和'可移植'语法。由于您希望代码可移植,因此您可能希望选择后者。

答案 1 :(得分:2)

解决方案是boost::function4