我一直相信函数指针不需要 & 符号:
然而,我见过的每一个使用的例子boost::bind
显示一个,并且我的编译器 - 在大多数情况下 - 如果省略它,则会给出通常难以理解的错误消息。
synchronize(boost::bind(&Device::asyncUpdate , this, "ErrorMessage")); // Works
synchronize(boost::bind(Device::asyncUpdate , this, "ErrorMessage")); // Fails
我的假设是错误的吗boost::bind
的第一个参数基本上是函数指针?
函数指针不需要它,member函数指针可以。
Device::asyncUpdate
是成员函数,正如您所猜测的,因为它被绑定到this
.
这是来自 n3337, 5.3.1/4 的规范引用
仅当使用显式 & 并且其操作数是未括在括号中的限定 ID 时,才会形成指向成员的指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)