初始化函数指针

时间:2017-09-16 14:09:19

标签: c++ function vector c++98

有人能告诉我如何初始化函数指针的Vector。

void a(){cout << "godzilla_1";}
void b(){cout << "godzilla_2";}
void c(){cout << "godzilla_3";}
void d(){cout << "godzilla_4";}

    vector<void(*)()> funcs = {a, b, c, d};

这给了我一个错误。在C ++ 98中,你不能像这样初始化。

请给我一个简单的例子。

3 个答案:

答案 0 :(得分:3)

您可能不会在c ++ 11之前使用初始化列表。以下将起作用

#include <iostream>
#include <vector>

void a(){std::cout << "godzilla_1";}
void b(){std::cout << "godzilla_2";}
void c(){std::cout << "godzilla_3";}
void d(){std::cout << "godzilla_4";}
int main() {

  std::vector<void(*)()> funcs;
  funcs.push_back(a);
  funcs.push_back(b);
  funcs.push_back(c);
  funcs.push_back(d);
  funcs.front()();
  return 0;
}

答案 1 :(得分:0)

C ++ 98:

funcs.push_back(a);
funcs.push_back(b);
funcs.push_back(c);
funcs.push_back(d);

答案 2 :(得分:0)

最好的办法是使用数组:

void (*funcs[])() = {a, b, c, d};