1

私が次のものを持っているとしましょう:

class Base 
{
  protected:
    Base() { }
};

class A : public Base
{
};

class B : public Base
{
};

ここで、テンプレートを使用してこれを行うとします。

TemplatedClass<Base> *generic = new TemplatedClass<A>();

うまくいかず、その理由は理解できると思いますが、同等のことができるかどうか知りたいです。フォームのいくつかのテンプレートの特殊化があります

typedef TemplatedClass<A> ASpec;
typedef TemplatedClass<B> BSpec;
typedef TemplatedClass<C> CSpec;

次のように動的に割り当てることができるように、実行時まで型を延期したい単一の変数があります

if(condition1)
  generic = new ASpec();
else if(condition2)
  generic = new BSpec();

これについて何か方法はありますか?クラスがテンプレート化されており、基本クラスから継承されていないという事実を変更する能力がありません。または、それを行うだけです。

4

2 に答える 2