【发布时间】:2021-06-16 18:12:30
【问题描述】:
在 C++ 中将 CRTP(Curiously Recurring Template Pattern)与抽象类的继承一起使用是否正确?如果是这样,是否存在与此构造相关的任何潜在问题?下面给出的代码 sn-p 描述了我的问题。
template<class T>
class Base {
void method_01() {
static_cast<T*>(this)->method_01();
}
};
class AbstractBase {
virtual void method_02() = 0;
};
class A : public Base<A>, public AbstractBase {
};
有没有可能如何用 CRTP 替换抽象类继承,所以A 类以类似的方式使用 CRTP
class A : public Base_01<A>, public Base_02<A> {
};
【问题讨论】:
-
1) 看起来不错,因为
T实现了method_01。 2) 看起来也不错,因为您已经定义了Base_01和Base_02类模板。
标签: c++ inheritance crtp