当前位置:  开发笔记 > 编程语言 > 正文

boost :: bind与具有引用参数的函数

如何解决《boost::bind与具有引用参数的函数》经验,为你挑选了2个好方法。

我注意到,当传递引用参数来提升绑定时,这些参数不会像引用一样.相反,boost会创建该成员的另一个副本,并且传入的原始变量保持不变.

当我更改对指针的引用时,一切正常.

我的问题是:

是否有可能获得工作引用,或者至少在尝试使用引用参数时给出编译错误?



1> Timo Geusch..:

bind的boost文档表明你可以使用boost :: ref和boost :: cref.



2> DolphinDream..:

我遇到了类似的问题,希望只要声明bind中使用的方法获取引用参数,就可以通过引用传递绑定参数.然而,这种情况并非如此!无论方法如何声明,您都需要在boost :: ref()或boost :: cref()中显式地包装bind参数(即通过引用传递).

例:

ClassA myClassAParameter
void Method(ClassA ¶m);

现在,以下绑定:

callback = boost::bind(&Method, myClassAParameter);

实际上使ClassA的对象的副本(我明白这是一个临时的分配和调用的方法应该不是一个参考保持它,因为这是不实际对象的引用,但该对象的副本).

但是,以下绑定:

callback = boost::bind(&Method, boost::ref(myClassAParameter));

进行复印,但使用一个参考来创建绑定对象.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有