C++中没有合适的默认构造函数,求大神帮忙
#include<iostream>usingnamespacestd;#include<assert.h>constintdefaultSize=100;//元素最多不...
#include<iostream>using namespace std;#include<assert.h>const int defaultSize=100;//元素最多不超过99template<class E,class K>class dataList; //数据表的前视定义template<class E,class K>class dataNode //数据表中结点类的定义{ friend class dataList<E,K>; //声明友元类public: dataNode(const K x):key(x){} K getKey()const{return key;} //读取关键码 void setKey(K k){key=k;} //修改关键码private: K key; //关键码 E other; //其他域};template<class E,class K>class dataList{public: dataList(int sz=defaultSize):ArraySize(sz),CurrentSize(0) //构造函数 { Element=new dataNode<E,K>[sz]; +++++++问题行 assert(Element!=NULL); } dataList(dataList<E,K>& R); //复制构造函数 virtual ~dataList(){delete []Element;} virtual int Length(){return CurrentSize;} virtual K getKey(int i)const //提取第i(从1开始)元素值 {assert(i>0||i<=CurrentSize);return Element[i-1].key;} virtual void setKey(K x,int i) //修改第i(从1开始)元素值 {assert(i>0||i<=CurrentSize);Element[i-1].key=x;} virtual int SeqSearch(const K x)const; //搜索 virtual bool Insert(E& e1); //插入 virtual bool Remove(K x,E& e1); //删除 friend ostream& operator<<(ostream& out,const dataList<E,K>& OutList); friend istream& operator>>(istream& in,dataList<E,K>& InList);protected: dataNode<E,K> *Element; int ArraySize,CurrentSize;};
错误:
dataNode<E,K> 没有合适的默认构造函数 展开
错误:
dataNode<E,K> 没有合适的默认构造函数 展开
展开全部
dataNode有唯一构造函数 dataNode(const k x):key(x),由于该构造函数必须显示提供参数x,非默认构造函数,但在dataList中new dataNode[sz]需要调用dataNode的默认构造函数却不存在,故而出错。可以给x赋一个值,当未提供显示参数是就使用该默认值实现default constructor。
追问
给x赋值 这句没怎么看懂,能在详细点吗
追答
即是在将dataNode的唯一构造函数dataNode(const k x=”某个值“),这样当你不提供初始值时,就会默认使用“某个值”来初始化x,x初始化key
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询