Boost与成员函数/变量的绑定

Boost binding with member functions/variables

本文关键字:变量 绑定 函数 成员 Boost      更新时间:2023-10-16

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();
}

我的问题是boost:ref只期望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);

同时,重新考虑你的设计——无论是单例还是这个奇怪的隐藏的隐式参数都不是好的。