0

単純なモジュール エンジンを作成しようとしていますが、どこから始めればよいかわかりません。次のようなものを作成したいと考えています。

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

*execute_awesomefunction_callbacks_here();* は std::vector にあるすべての関数を実行します

これを達成する方法についてのアイデアはありますか?または、これを行うためのより良い方法はありますか?

4

1 に答える 1

3

std::vectorof で実装できます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 に答える