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 に答える