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);