假设我有以下内容:
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();
有什么办法可以解决这个问题吗?我没有能力改变类是模板化的并且不是从基类继承的事实,或者我会这样做。