在一个项目中,我有以下问题:
我有一个非常简单的继承方案(我需要继承而不是组合):
类基础
-> 类 DerivedA
-> 类 DerivedB
-> 类 DerivedC
A、B 和 C 从 Base 派生,仅此而已。所以现在我有两个选择:
具有虚拟性的公共继承
没有虚拟性的私有继承
由于某些优化原因(我需要大量内联),我不想要虚拟性......而且我不想要私有继承。我认为剩下的唯一选择是 CRTP。但是基类有大约 300 个函数,在其中实现 CRTP 将是一个真正的痛苦。
所以我想知道以下解决方案是否有效:我只在基类的析构函数中使用 CRTP:
template<class TCRTP> class Base
{
~Base() {delete static_cast<TCRTP*>(this);}
}
其中 TCRTP 将是 DerivedA、B 或 C,我进行公共继承。完全没问题,还是有问题?
非常感谢你。