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

发布于 2024-12-15 22:50:02 字数 1083 浏览 2 评论 0原文

信息

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

问题

我刚刚在调试 一切看起来都OK ...

但是在发布中我遇到了上面提到的很多错误,

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::function0boost::function1。这是因为 VS2010 不支持某些东西(我不知道到底是什么),

我对吗?

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

Boost 1.47 和 VS2010

INFO

I'd like to use boost::function to pass callback as parameter, like this way:

void ReadPacket(
        boost::function<void (const boost::system::error_code&, Packet* p)> callback);

and then use it :

ReadPacket(boost::bind(
    &ServerSession::storePacket,
    this,
    _1,
    _2
    ));

After all after a chain of callbacks i call

callback(ec, packet);

PROBLEM

I've just compiled solution in Debug and everything looks OK ...

but in Release I got lots of errors mentioned above

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 ';'

I'm confused and dissappointed.

SUGGESTION

I've found that there're different syntax in boost::function. For example boost::function0 or boost::function1. This was made due to VS2010 doesn't support something (I don't know what exactly)

Am I right?

I also need to make this application as portable and cross-platform as possible.

boost 1.47 and VS2010

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

这个俗人 2024-12-22 22:50:02

In case if you have missed it, here is the tutorial on boost function. If you look at the tutorial it will list both the 'preferred' and the 'portable' syntax. Since you want the code to be portable, you might want to choose the latter.

迷路的信 2024-12-22 22:50:02

解决方案是 boost::function4

the solution is boost::function4

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文