【发布时间】:2013-01-31 22:03:51
【问题描述】:
一个类可以同时继承抽象类和CRTP类吗?或者,如果我从一个 CRTP 类继承,我所继承的所有类都必须使用 CRTP?
【问题讨论】:
-
你为什么不测试呢? ;)
标签: c++ templates inheritance abstract-class crtp
一个类可以同时继承抽象类和CRTP类吗?或者,如果我从一个 CRTP 类继承,我所继承的所有类都必须使用 CRTP?
【问题讨论】:
标签: c++ templates inheritance abstract-class crtp
一个类可以继承抽象类和CRTP类吗?
为什么不呢?是的,可以。
或者,如果我从一个 CRTP 类继承,我所继承的所有类都必须使用 CRTP?
为什么会这样?不,他们不必这样做。
【讨论】:
是的。
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();
}
【讨论】: