我正在使用 boost::function 进行函数引用:
typedef boost::function<void (SomeClass &handle)> Ref;
someFunc(Ref &pointer) {/*...*/}
void Foo(SomeClass &handle) {/*...*/}
将 Foo 传递给 someFunc 的最佳方式是什么? 我试过类似的东西:
someFunc(Ref(Foo));
最佳答案
为了将临时对象传递给函数,它必须通过值或常量引用来获取参数。不允许对临时对象进行非常量引用。因此,以下任一方法都应该起作用:
void someFunc(const Ref&);
someFunc(Ref(Foo)); // OK, constant reference to temporary
void someFunc(Ref);
someFunc(Ref(Foo)); // OK, copy of temporary
void someFunc(Ref&);
someFunc(Ref(Foo)); // Invalid, non-constant reference to temporary
Ref ref(Foo);
someFunc(ref); // OK, non-constant reference to named object
顺便说一句,当它既不是引用也不是指针时调用类型 Ref
和实例 pointer
可能会有点困惑。
关于c++ - 如何将函数引用传递给参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951605/