将继承对象列表传递给接受父对象列表的函数

时间:2018-12-17 16:52:24

标签: c++ inheritance stdlist

我有一个从另一个类继承的类:

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,但这将是一个不太好的解决方案。有没有一种方法可以将继承对象列表作为父类型的对象列表传递?

0 个答案:

没有答案