这个列表必须包含函数,它们可能来自不同的命名空间,甚至是实例类的方法。
然后将迭代此列表并调用所有函数和方法。如果它们也可以包含参数,那就太好了。
我正在考虑使用 std::vector,但我怀疑我的猜测远非正确。
你推荐我什么方法?欢迎所有帮助。
如果您的编译器已经支持,您可以使用 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)