一个类可以继承抽象类和CRTP类吗?

时间:2013-01-31 22:03:52

标签: c++ templates inheritance abstract-class crtp

一个类可以继承抽象类和CRTP类吗?或者,如果我从CRTP类继承,那么我继承的所有类都必须使用CRTP吗?

2 个答案:

答案 0 :(得分:3)

  

类是否可以从抽象类和CRTP类继承?

为什么不呢?是的,它可以。

  

或者,如果我从CRTP类继承,我继承的所有类都必须使用CRTP吗?

为什么这样?不,他们不必。

答案 1 :(得分:2)

class AbstractBase {
public:
  virtual ~AbstractBase() {}
  virtual void Function() =  0;
};

template<class T>
class CRTPBase {
public:
  void Function2() {}
};

class Derived : public AbstractBase, public CRTPBase<Derived> {
public:
  void Function() {}
};

int main () {
  Derived d;
  d.Function();
  d.Function2();
}