0

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

4

2 回答 2

3

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

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

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

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

于 2013-01-31T22:07:29.920 回答
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();
}
于 2013-01-31T22:28:28.030 回答