テンプレートパラメータがいくつかのクラスのインスタンスであるかどうかによっていくつかのコードを生成するテンプレートを書く必要があります。テンプレートはすべてのクラスに対して生成できますが、クラスが他のクラスのサブクラスである場合にのみ、コードを実行する必要があります。クラスインスタンスなしのC++テンプレートのクラスを確認する
問題は、実装する必要がある関数はクラスのインスタンスを受け取らないため、既知の唯一のものはクラス名です。だから、それはいくつかの説明を追加するオブジェクト
template<T>
class A
{
void somefunction(void)
{
if (T instanceof Foo) then ...
else ...
}
}
のインスタンスを要求としてのdynamic_castでこれを達成することは不可能である
class X: public Foo {};
class Y {};
class A<X> {} // special logic is generated
class A<Y> {} // special logic is NOT generated
あなたはテンプレートでFooのインスタンスのための特別な動作が必要な場合は、I tテンプレートクラスは必要ありません。テンプレートメソッドパターンが必要です。 –
@Miguel Angel:実行時の多形性が必要な場合は**必要です。 –