следующая ситуация:C++ Template Специализация с Inheritance
class FeatureBase
class Feature1 : public FeatureBase
class FeatureAttrBase
class Feature1Attr : public FeatureAttrbase
FeatureBase содержит список FeatureAttrBase и должны иметь возможность создавать и управлять этими объектами. Поэтому я использую шаблон в FeatureBase.
template<class T = FeatureAttrBase> class FeatureBase
создания и управления атрибутами (например, новый T())
и подклассы используют специализированный удел
class Feature1 : public FeatureBase<Feature1Attr>
нигде в моем коде я написал метод
RegisterFeature(FeatureBase<FeatureAttrBase>* feature)
, но компилятор дает мне ошибку, что он не смог преобразовать между Feature1 и FeatureBase. В указанном методе мне нужно использовать информацию только из FeatureAttrBase. Но внутри Feature1 мне нужен доступ к Feature1Attr.
Таким образом, вопрос заключается в том, как решить эту проблему? Нужно ли мне менять свою структуру данных?
Итак, в чем вопрос? –
'Feature1' и' FeatureBase 'не принадлежат к одной и той же иерархии, они не связаны между собой классами. –
jrok
есть возможность изменить иерархию (шаблон, наследование) для использования классов указанным способом? – kaelumania