C ++:使用子类(typedef)从两个列表中创建一个列表

时间:2017-01-04 14:13:11

标签: c++ list subclass typedef

我有两个列表(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);

1 个答案:

答案 0 :(得分:0)

感谢您的帮助!

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