需要某种方式将函数存储在列表中,然后调用它们

3 c++ stl function list

这个列表必须包含函数,它们可能来自不同的命名空间,甚至是实例类的方法。
然后将迭代此列表并调用所有函数和方法。如果它们也可以包含参数,那就太好了。

我正在考虑使用 std::vector,但我怀疑我的猜测远非正确。

你推荐我什么方法?欢迎所有帮助。

Dav*_*rle 5

如果您的编译器已经支持,您可以使用 std::function 和 std::bind 。

#include <functional>
#include <vector>

void x(int) {}
void y() {}
class Z {
public:
    void z() {}
};

int main(int argc, char *argv[])
{
    typedef std::function<void ()> VoidFunc;
    typedef std::vector<VoidFunc> FuncVector;
    FuncVector functions;

    functions.push_back(std::bind(&x, 1));
    functions.push_back(&y);
    Z z1;
    functions.push_back(std::bind(&Z::z, z1));

    for(FuncVector::iterator i = functions.begin(); i != functions.end(); i++) {
        (*i)();
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)