我正在学习类继承,并且正在努力找出一个小问题。我有两节课

class OrderList {
private:
    std::vector<AbstractClass*> elements;


public:
    OrderList(const std::vector<AbstractClass*>& list){
    //  for (auto &i : list)
    //      elements.push_back(i);
    }

    OrderList(const OrderList& ol);

    OrderList& operator=(const OrderList&);

    virtual ~OrderList(){};


};

class DerivedOrderList : public OrderList {
    DerivedOrderList(std::vector<AbstractClass*>& list) : OrderList(list){}

    DerivedOrderList(const DerivedOrderList&);

    DerivedOrderList& operator=(const DerivedOrderList&);

    virtual ~DerivedOrderList(){};
};


然后,我的主要功能按如下方式调用DerivedOrderList:

DerivedOrderList myOrderList = DerivedOrderList(myVector);


我收到一个错误:没有与参数匹配的构造函数“ DerivedOrderList :: DerivedOrderList”的实例

是什么原因造成的?

最佳答案

DerivedOrderList中的构造方法必须是公共的。

编辑:另请参阅NathanOliver的评论和Rob K关于myVector类型的答案。

09-07 09:14