返回bool的函数数组

时间:2015-06-09 04:32:01

标签: c++ arrays function

我有这些布尔函数,我正在单独编写,我正在考虑创建一个数组,然后使用循环来遍历它们中的每一个。下面是我想要放在数组中的各个函数。

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);

我可以这样做吗?

1 个答案:

答案 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 ++代码可以提供更多的安全性和灵活性,因此如果您有现代的编译器,那么首选它。