c++ - 如何将函数引用传递给参数

标签 c++ function boost reference

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

相关文章:

c++ - C++ 中的参数和函数

c++ - 如何使用 CMake 处理仅 header 的第三方?

c++ - 在 C++ 中将对象作为参数传递给函数时修改的对象

c++ - 右值作为构造对象的初始化器

C++: boost 侵入式指针如何被破坏?

c++ - 存储指向 Boost MultiSet 索引的引用/指针

C++:不区分大小写的前 n 个字符字符串比较

c++ - 是否可以将复杂的 Go 结构导出/包装到 C?

angularjs - ng-click 首先应用类,然后执行函数

jquery - 如何使用 jQuery 每个函数返回一个变量