以下情况:
class FeatureBase
class Feature1 : public FeatureBase
class FeatureAttrBase
class Feature1Attr : public FeatureAttrbase
FeatureBase 包含一个 FeatureAttrBase 列表,应该能够创建和管理这些对象。因此我在 FeatureBase 上使用了一个模板。
template<class T = FeatureAttrBase> class FeatureBase
创建和管理属性(例如 new T())
并且子类使用专门的继承
class Feature1 : public FeatureBase<Feature1Attr>
在我的代码中的其他任何地方我都写了一个方法
RegisterFeature(FeatureBase<FeatureAttrBase>* feature)
但是编译器给了我一个错误,它无法在 Feature1 和 FeatureBase 之间进行转换。在上述方法中,我只需要使用来自 FeatureAttrBase 的信息。但在 Feature1 中,我需要访问 Feature1Attr。
因此问题是如何解决这个问题?我必须改变我的数据结构吗?