C++:从两个包含子类 (typedef) 的列表创建一个列表

C++: Creating one list out of two lists with subclasses (typedefs)

本文关键字:列表 创建 一个 typedef 两个 C++ 包含 子类      更新时间:2023-10-16

我有两个列表(listsub1和listsub2),我想将它们与push_back合一(listclass)。

class Subclass1 : public Basisclass {...};
class Subclass2 : public Basisclass {...};
//...
typedef std::list<std::shared_ptr<Basisclass> > ListClass;
typedef std::list<std::shared_ptr<Subclass1> > ListSubclass1;
typedef std::list<std::shared_ptr<Subclass2> > ListSubclass2;
//...
ListSubclass1 listsub1 = ...
ListSubclass2 listsub2 = ...
//...
ListClass listclass;
for (const std::shared_ptr<Subclass1> pSubclass1 : listsub1)
{
    listclass.push_back(pSubclass1);
}
for (const std::shared_ptr<Subclass2> pSubclass2 : listsub2)
{
    listclass.push_back(pSubclass2);
}

如何正确执行此操作?以下是错误消息:

error: no matching function for call to 'std::list<std::shared_ptr<Basisclass> >::push_back(const std::shared_ptr<Subclass1>&)'
      listclass.push_back(pSubclass1);

感谢您的帮助!

我忘了包含头文件:/现在它工作正常!