C ++如何使用以下示例实现条件继承

时间:2013-12-18 21:35:27

标签: c++ inheritance

我想要做的是在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

谢谢!

1 个答案:

答案 0 :(得分:3)

Foo是一个模板,而不是一个类。所有Foo<T>的公共类类型都是Base,因此您可以说:

Base * p1 = new Foo<Type1>;
Base * p2 = new Foo<Type2>;