初始化功能指针的向量

initialize Vector of function pointer

本文关键字:向量 指针 功能 初始化      更新时间:2023-10-16

有人可以告诉我如何初始化功能指针的向量。`

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中,您不能这样初始化。

请给我一个简单的例子。

您不得在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;
}

c 98:

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

您最好的选择是使用数组:

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