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个参数......我该怎么做才能解决这个问题?
答案 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);
此外,重新考虑你的设计 - 既不是单身人士,也不是这种奇怪隐藏的隐含争论的事情。