如何将函数作为参数传递?

时间:2012-11-24 21:11:35

标签: c++

将一个函数作为另一个函数的参数传递的最快最短的方法是什么,而不使用除一行中的std之外的其他库?

我的意思是假设我们有一个函数forloop(int x, *) {...},它运行0x运行*函数的for循环;函数调用应该类似于:forloop(3, **() { std::cout "Hi!"; });

PS:***只是逐个函数类型的占位符以及将函数作为参数传递的方式。

3 个答案:

答案 0 :(得分:2)

C ++ 11提供匿名函数:

forloop(3, []{ std::cout "Hi!"; });

示例

#include <iostream>
#include <functional>

 void forloop(int times, std::function<void()> f) {
     for(int i = 0; i < times; i++) {
         f();
     }
 }

int main() {
    forloop(3, [] () { std::cout << "Hello world"; });
}

答案 1 :(得分:0)

如果您的函数是任何类的成员,请尝试“指向成员函数的指针”。

答案 2 :(得分:0)

您正在考虑几种选择。

  1. 函数指针,C风格方式
  2. std::function,它是C ++ TR1和C ++ 11的一部分
  3. 使用仿函数和std::ptr_fun来调整您的功能
  4. 您展示的语法仅适用于C ++ 11。早期的C ++版本没有提供定义匿名函数的可能性。