【问题标题】:initialize Vector of function pointer初始化函数指针的向量
【发布时间】:2017-09-16 14:09:19
【问题描述】:

谁能告诉我如何初始化函数指针的向量。`

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 或 C++14。
  • 为什么不尝试使用puah_back()方法添加函数指针?

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


【解决方案1】:

在 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;
}

【讨论】:

    【解决方案2】:

    C++98:

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

    【讨论】:

      【解决方案3】:

      最好的办法是使用数组:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        相关资源
        最近更新 更多