我有这些布尔函数,我正在单独编写,我正在考虑创建一个数组,然后使用循环来遍历它们中的每一个。下面是我想要放在数组中的各个函数。
bool A(void);
bool E(void);
bool O(void);
bool P(void);
bool U(void);
bool I(void);
bool C(void);
bool L(void);
bool D(void);
我可以这样做吗?
答案 0 :(得分:5)
您可以拥有一个std::function
s数组(这是一个通用函数指针)。示例程序:
#include <array>
#include <functional>
#include <iostream>
typedef bool Func(void);
Func A,E,O,P,U,I,C,L,D;
int main()
{
std::array<std::function<Func>, 9> arr = { A,E,O,P,U,I,C,L,D };
for ( auto&& f: arr )
std::cout << f() << '\n';
}
当然,您需要为所有这些功能提供机构。
在C ++ 11之前,代码应该是:
Func *arr[] = { A,E,O,P,U,I,C,L,D };
for (size_t i = 0; i != sizeof arr / sizeof arr[0]; ++i)
std::cout << arr[i]() << '\n';
使用现代C ++代码可以提供更多的安全性和灵活性,因此如果您有现代的编译器,那么首选它。