我想要做的是在Foo类中进行简单的条件继承 所以取决于它是如何实现的(参见用法)
class BaseType
{
protected:
m_valueX;
public: BaseType(int param = 0):m_valueX(param){}
~ BaseType(){}
}
...
class Type1 : public BaseType
{
public: Type1():BaseType(1){}
~Type1(){}
}
...
class Type2 : public BaseType
{
public: Type2(): BaseType(2){}
~Type1(){}
}
...
template<typename Base>
class Foo: public Base
{
public:
Foo(){}
~Foo();
void dothis();
}
...........
在cpp文件中
template<typname Base>
Foo<Base>::Foo():Base()
{
}
Foo::~Foo(){}
void Foo::dothis(){}
用法:
Foo* fooptr1 = new Foo<Type1>();<== error use of class template requires template argument list
Foo* fooptr2 = new Foo<Type2>();>();<== error use of class template requires template argument list
谢谢!
答案 0 :(得分:3)
Foo
是一个模板,而不是一个类。所有Foo<T>
的公共类类型都是Base
,因此您可以说:
Base * p1 = new Foo<Type1>;
Base * p2 = new Foo<Type2>;