(あいまいなタイトルで申し訳ありません)
さまざまな派生クラス D1、D2 などを持つ基本クラス B があります。
さらに、私はテンプレートを持っています
template <class T> Storage;
現在、各派生クラスには異なるバージョンの Storage クラスがあります
class D1 : public class B {
Storage<int> *myStorage;
void action1();
void specific_D1_action();
// other stuff...
}
class D2 : public class B {
Storage<float> *myStorage;
void action1();
void specific_D2_action();
// other stuff...
}
D1::action1()
D2::action1()
それぞれを使用し、myStorage
まったく同じコードを持っています。ただし、それぞれのmyStorage
オブジェクトの実際のテンプレート パラメータは異なります。
コードの重複を避けるために、基本クラス B (D1、D2、... ではなく) で myStorage と action1 を定義できるように、Storage のすべてのバージョンに一種の「基本クラス」を持たせることは可能ですか?
派生クラスの特定のアクションのため、基本クラス B を「テンプレート化」することはできないと思います。
(この例は非常に単純化されています。実際のケースでは、テンプレート パラメーターは複雑なクラスです)