2011-11-09 33 views
0

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

我的问题是,升压:REF预计只有1个说法......我能做些什么来解决这个ISSU?

回答

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

此外,重新考虑你的设计 - 无论是单身还是这个奇怪的隐藏的隐含论证的事情都很好。

+0

感谢您的回答,作为设计,A是CView的,B是我想调用一个函数从一个命令行,用我的编程经验有限的下拉控制台,我没有看到任何好转实施这一方式 – Smash