Boost与成员函数/变量的绑定
Boost binding with member functions/variables
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);
同时,重新考虑你的设计——无论是单例还是这个奇怪的隐藏的隐式参数都不是好的。
相关文章:
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- C++通过绑定到引用成员而缩短临时变量寿命?
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 成员变量的结构化绑定
- 与类而非对象绑定的可变变量
- 完美转发使用结构化绑定声明的变量
- 为什么静态常量字符 * const 变量在为左值时可绑定到右值引用参数
- Qt Sql 无法将变量绑定到 QSqlQuery prepare 语句
- 如何将所选行的第一列值绑定到变量并在 QT 的 SQL 命令中使用它?
- boost ::绑定发送变量的回调args到回调函数
- 如何在精灵上绑定变量
- 在 NS-2 中绑定变量时出错
- 模板变量的绑定时间
- 使函数内联是否会影响绑定到其参数的临时变量的生存期
- std::绑定到本地变量作为一个值
- 将c++方法和变量绑定到表中
- 将临时变量绑定到非const引用编译
- 使用Lua C API将现有的C变量绑定到Lua