0

我正在尝试制作一个简单的模块引擎,但我真的不知道从哪里开始,我想创建这样的东西:

int awesomefunction() {
 // do something here
    execute_awesomefunction_callbacks_here();
 // some more stuff
}

*execute_awesomefunction_callbacks_here();* 将执行 std::vector 中的所有函数

关于如何实现这一目标的任何想法?或者有没有更好的方法来做到这一点?

4

1 回答 1

3

std::vector您可以使用of来实现它std::function。唯一的约束是所有函数对象必须具有兼容的返回类型和参数类型。

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实现相同的功能

于 2012-08-11T21:11:46.090 回答