[英]Boost binding with member functions/variables
A级可以进入B级。
在B类函数中,我想调用A类中定义的函数,并将B类的参数传递给它。
因此,在AI类中,尝试编写以下内容为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只希望有一个参数...我该怎么解决这个问题?
要获取指向数据成员的指针,您无需执行&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);
另外,请重新考虑您的设计-单身人士和这种奇怪的隐藏式隐式参数都不好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.