C++ C++;没有与参数列表匹配的构造函数实例?

C++ C++;没有与参数列表匹配的构造函数实例?,c++,C++,我正在学习类继承,我正在努力解决一个小问题。我有两节课 class OrderList { private: std::vector<AbstractClass*> elements; public: OrderList(const std::vector<AbstractClass*>& list){ // for (auto &i : list) // elements.push_back(i);

我正在学习类继承,我正在努力解决一个小问题。我有两节课

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”的实例


什么原因可能导致这种情况?

DerivedOrderList中的构造函数需要是公共的

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

OrderList(const std::vector&list)
采用const参考

DerivedOrderList(std::vector&list)
采用可变引用。将其更改为
DerivedOrderList(const std::vector&list)

另外,我建议在某个地方使用
typdef
ing您的
vector
。你在很多地方使用它,所以不要重复你自己

ETA:这也是DerivedOrderList myOrderList=DerivedOrderList(myVector)应该是
DerivedOrderList myOrderList(myVector)这不是Java或C#。

std::vector
std::vector
不同。编译器为每个单独的模板实现创建一个完全不同的类


为什么不提供重载构造函数
DerivedOrderList::DerivedOrderList(std::vector&)
OrderList::OrderList(std::vector&)

myVector的类型是什么?它是从抽象类派生的类。因此构造函数引入vector,其中myVector定义为vector myVector提供完整的可构建代码将有助于
vector
vector
不同
myVector
需要是
vector
或隐式转换为
vector
DerivedOrderList myOrderList = DerivedOrderList(myVector);