使用成员函数/变量增强绑定

时间:2011-11-09 18:52:30

标签: c++ boost boost-bind boost-phoenix

A类可以访问B类。

在B类函数中,我想调用A类中定义的函数,并从B类传递给它。

因此,在A类中,我尝试编写以下内容,为B类提供所需的功能。

A::provideFunction
{
    boost::function<void()> f = boost::bind(&A::Foo,this,boost::ref(&B::_param1,B::instance()),boost::ref(&B::_param2,B::instance())));
    B::instance()->provideFunction(f);
}

在B组中,我只是调用函数:

B::callFunction()
{
    _param1 = "A";
    _param2 = "B";
    _f();
}

我遇到的问题是提升:ref只需要1个参数......我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

要获取指向数据成员的指针,您不需要执行&T::foo,只需执行&obj->foo。要获取参考包装器ref(obj->foo)

B* b = B::instance();
boost::function<void()> f = boost::bind(
    &A::Foo, this, boost::ref(b->_param1), boost::ref(b->_param2)
);
b->provideFunction(f);

此外,重新考虑你的设计 - 既不是单身人士,也不是这种奇怪隐藏的隐含争论的事情。