我正在尝试制作一个简单的模块引擎,但我真的不知道从哪里开始,我想创建这样的东西:
int awesomefunction() {
// do something here
execute_awesomefunction_callbacks_here();
// some more stuff
}
*execute_awesomefunction_callbacks_here();* 将执行 std::vector 中的所有函数
关于如何实现这一目标的任何想法?或者有更好的方法可以做到这一点吗?
您可以使用 std::function
的std::vector
来实现它。唯一的约束是所有函数对象都必须具有兼容的返回类型和参数类型。
class Publisher {
public:
void registerSubscriber(std::function<int(int, double)> callback) {
callbacks_.push_back(callback);
int executeAwesomeFunction() const {
// loop over vector calling each function object.
}
private:
std::vector<std::function<double(int,double)>> callbacks_;
}
这需要 C++11 支持,但您可以使用 boost::function 实现相同的目标。