1

私は複数の量を持っています

ブースト:機能

タイプ定義メンバー:

typedef boost::function<void(PARAM_LIST1)> Func1;
typedef boost::function<void(PARAM_LIST2)> Func2;
typedef boost::function<void(PARAM_LIST3)> Func3;
...//and more

Func1 f1;
Func2 f2;
Func3 f3;
...//and more

f1、f2、f3、...をコンテナに保存したいと思います。特に、すべての f を 1 つのパラメーターとして渡す場合。

そのための最適なコンテナは何ですか? テンプレートにはどのタイプを使用すればよいですか? ありがとう!

4

2 に答える 2

1

関数は異なる型であり、基本クラス (スマート) ポインターを使用できる共通のインターフェイスがないため、std::vectorまたは他のstdコンテナーに格納することはできません。

考えられる解決策はboost::tuple、またはユーザー定義のコンテナを使用してclass、さまざまな関数タイプを格納し、単一のパラメータとして関数に渡すことができます。ただし、これにより、各関数型のインスタンス数が 1 つに制限されます (関数型ごとのコンテナーを使用して関数インスタンスを格納する場合を除く)。オンラインタプル デモを参照してください。

于 2013-07-15T10:09:56.267 に答える