C++ 使用成员函数/变量的Boost绑定

C++ 使用成员函数/变量的Boost绑定,c++,boost,boost-bind,boost-phoenix,C++,Boost,Boost Bind,Boost Phoenix,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函数中,我想调用类a中定义的函数,并

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函数中,我想调用类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);
}

我的问题是boost:ref只需要一个参数。。。如何解决此问题?

要获取指向数据成员的指针,您不需要执行
&t::foo
,只需执行
&obj->foo
。要获取引用包装,请使用
ref(obj->foo)

B*B=B::instance();
boost::函数f=boost::bind(
&A::Foo,this,boost::ref(b->_参数1),boost::ref(b->_参数2)
);
b->提供故障(f);

另外,请重新考虑您的设计-无论是单例还是这种奇怪的隐藏隐式参数都不好。

感谢您的回答,对于设计,A是CView,B是下拉式控制台,我想从命令行调用A函数,以我有限的编程经验,我看不到任何更好的实现方法
B* b = B::instance();
boost::function<void()> f = boost::bind(
    &A::Foo, this, boost::ref(b->_param1), boost::ref(b->_param2)
);
b->provideFunction(f);