Может ли класс наследовать как от абстрактного класса, так и от класса CRTP?

Может ли класс наследовать как от абстрактного класса, так и от класса CRTP? Или, если я наследую от класса CRTP, должны ли все классы, которые я наследую, использовать CRTP?

0

Решение

Да.

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();
}
2

Другие решения

Может ли класс наследовать как от абстрактного класса, так и от класса CRTP?

Почему бы и нет? Да, оно может.

Или, если я наследую от класса CRTP, должны ли все классы, которые я наследую, использовать CRTP?

Почему так? Нет, они не должны.

3

По вопросам рекламы [email protected]