У меня есть полиморфная проблема.Прохождение полиморфных векторов
void func(std::vector< BaseClass* > A){}
std::vector< SubClass* > B;
func(B); //Compile error C2664
Я получаю сообщение об ошибке, как так:
error C2664 'func' : cannot convert parameter from 'std::vector<_Ty>' to 'std::vector<_Ty>' with
[
_Ty=B *
]
and
[
_Ty=A *
]
Я также попробовал некоторые странные вещи, как у параметра будет указатель на вектор, и я передаю адрес вектора следующим образом:
void func(std::vector< BaseClass* > *A){}
std::vector< SubClass* > B;
func(&B); //same error
Вы ожидаете, что сможете передать 'vector' функции, ожидающей 'vector '? Готов поспорить, вы бы этого не сделали. Это то же самое в вашем случае, действительно - типы не связаны. –
jrok
Зачем вам нужен std :: vector? Вы всегда можете поместить SubClass * в BaseClass *. –
WiSaGaN