我有一个从另一个类继承的类:
class A {
//...
};
class B : public A {
//...
};
我有一个函数,该函数接受指向父类型的指针的(常量)列表:
void foo(const list<A*>& myList);
我想将包含指向子类型的指针的列表传递给该函数:
list<B*> myList;
//populate list
foo(myList);
我收到编译错误:
错误C2664:无法将参数1从'std :: list <_Ty>'转换为'const std :: list <_Ty>&'
我无法使用C样式转换或reinterpret_cast
进行转换:
foo(reinterpret_cast<list<A*> >(myList));
给出错误
错误C2440:“ reinterpret_cast”:无法从“ std :: list <_Ty>”转换为“ std :: list <_Ty>”
foo((list<A*>)myList);
给出错误
错误C2440:“类型转换”:无法从“ std :: list <_Ty>”转换为“ std :: list <_Ty>”
对此的一种解决方案是为foo
和'list list<B*>
C (
A`实现is another type that inherits from
,但这将是一个不太好的解决方案。有没有一种方法可以将继承对象列表作为父类型的对象列表传递?