【发布时间】:2011-06-30 16:40:37
【问题描述】:
boost::bind 在许多情况下都非常方便。其中之一是调度/发布一个方法调用,以便 io_service 稍后在可能的情况下进行调用。
在这种情况下,boost::bind 的行为与人们所期待的一样:
#include <boost/asio.hpp>
#include <boost/bind.hpp>
boost::asio::io_service ioService;
class A {
public: A() {
// ioService will call B, which is private, how?
ioService.post(boost::bind(&A::B, this));
}
private: void B() {}
};
void main()
{
A::A();
boost::asio::io_service::work work(ioService);
ioService.run();
}
然而,据我所知,boost 创建了一个仿函数(一个带有 operator()() 的类),能够在给定对象上调用给定方法。该类应该可以访问私有 B 吗?我猜不是。
我在这里错过了什么?
【问题讨论】: