3

(あいまいなタイトルで申し訳ありません)

さまざまな派生クラス 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 を「テンプレート化」することはできないと思います。

(この例は非常に単純化されています。実際のケースでは、テンプレート パラメーターは複雑なクラスです)

4

1 に答える 1