私はC++で静的ライブラリ(.lib
)にパッケージ化されたクラスフレームワークを作成しています。そのライブラリーでは、私は、このような何かをテンプレートクラスFoo
を持っている:C++で "カスタム"クラスを動的にインスタンス化する方法はありますか?
template <class T> class Foo {
<T> data;
}
フレームワークは、ファイルから読み込まれたテンプレートタイプでFoo
のオブジェクトを作成します。理論的にはこのようになります。その:
int
int
float
double
ので、フレームワークは、テキストファイルをロードし、それがテンプレートタイプint
、int
、float
、double
で、クラスにFoo
4回をインスタンス化することをに基づいでしょう。
これまでのところうまくいきます。複雑な部分へ:クライアントアプリケーション(.lib
のフレームワークを使用)は、Foo
からカスタムクラスを派生させることができます。それをBar
としましょう。
int
int
Bar
フレームワークは2つのFoo<int>
オブジェクト、およびBar
の1つのインスタンスを作成する必要があることを意味します:今、私はこのような設定テキストファイルでそのカスタムクラスを許可する必要があります。 C++で可能なことはありますか?そのため、フレームワークはクライアントアプリケーションが定義するクラスを動的にインスタンス化します。
これが不可能な場合は、C++でこれに適した解決策は何でしょうか?
これは、ある種の工場のユースケースです。クライアントは、インスタンスを作成するためにコールバックを提供する必要があります – StoryTeller