C++ boost::与参数为引用的函数绑定
我注意到,当将引用参数传递给boostbind时,这些参数的行为与引用不同。相反,boost会创建该成员的另一个副本,并且传入的原始变量保持不变 当我更改指针的引用时,一切正常 我的问题是:C++ boost::与参数为引用的函数绑定,c++,boost-bind,C++,Boost Bind,我注意到,当将引用参数传递给boostbind时,这些参数的行为与引用不同。相反,boost会创建该成员的另一个副本,并且传入的原始变量保持不变 当我更改指针的引用时,一切正常 我的问题是: 有没有可能找到工作的参考资料,或者至少在尝试使用引用参数时给出一个编译错误?建议您可以使用boost::ref和boost::cref进行编译。我遇到了类似的问题,希望在绑定中使用的方法声明为引用参数时,通过引用传递绑定参数。然而事实并非如此!无论方法是如何声明的,您都需要在boost::ref()或boo
有没有可能找到工作的参考资料,或者至少在尝试使用引用参数时给出一个编译错误?建议您可以使用boost::ref和boost::cref进行编译。我遇到了类似的问题,希望在绑定中使用的方法声明为引用参数时,通过引用传递绑定参数。然而事实并非如此!无论方法是如何声明的,您都需要在boost::ref()或boost::cref()中显式地包装bind参数(通过引用传递) 例如:
ClassA myClassAParameter
void Method(ClassA ¶m);
现在,以下绑定:
callback = boost::bind(&Method, myClassAParameter);
callback = boost::bind(&Method, boost::ref(myClassAParameter));
将实际创建ClassA对象的副本(据我所知,这是一个临时分配,被调用的方法应该而不是保留对它的引用,因为这不是对实际对象的引用,而是对对象副本的引用)
但是,以下约束条件:
callback = boost::bind(&Method, myClassAParameter);
callback = boost::bind(&Method, boost::ref(myClassAParameter));
将不制作副本,而是使用引用创建绑定对象 谢谢大家!!我正在使用boost::asio Timer.5来学习。并希望生成传递参数的通用打印。例如,
void increment_int(int&x)
如果在调用int tmp=0
时意外忘记使用boost::ref
,boost::function func=boost::bind(f,tmp)
-->执行函数时,tmp
将不会增加。相反,由boost::bind
创建的对象保存一个副本,并使用该副本调用函数increment\u int
。有关更多信息,请参阅。我还确保创建一个简短、自包含、可编译的示例来测试/验证我所说的内容。