我正在使用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/

10-14 21:54