У меня есть родительский класс, который является шаблоном, и дочерний класс, который его реализует.C2664 при бросании дочернего класса в шаблонный родительский класс
template< typename T1, typename T2>
class ParentClass{ . . . };
class ChildClass : public ParentClass<MyT1, MyT2> { . . . };
И я хочу, чтобы иметь указатель, который я могу использовать полиморфно:
ParentClass<T1, T2>* ptr;
ptr = static_cast<ParentClass<MyT1, MyT2>* >(new ChildClass());
Независимо от того, как я бросил его, я всегда получаю C2664, который имеет то же выражение:
ошибка C2664: невозможно преобразовать параметр 1 от «ParentClass < T1, T2> *» до «ParentClass < T1, T2> *»
Разве нельзя бросать типов указателей между унаследованными типами, если родитель шаблонный, даже если типы, указанные в шаблонах тоже самое?
Является ли 'MyT1' отличным от' T1'? «Static_cast», как написано, является непоследовательным. – Potatoswatter
Какой компилятор вы используете? VC++? – outis
Почему у вас есть первые 'T1' и' MyT1'? Должен ли первый быть 'MyT1' вместо этого? –