[英]use of class template requires template argument list and no appropriate default constructor
我不确定我做错了什么。 我试图将字符串名称和键从类包装传递到类hashT
C2955:'hashT':使用类模板需要模板参数列表
C2512:“ hashT”:没有适当的默认构造函数
template<class T>
class hashT{
public:
hashT(const int newKey, const string newName= "") :theList(newKey,newName){
key = newKey;
name = newName;
theList.push_back(key);
theList.push_back(name);
}
hashT & operator=(const hash &rhs) {
if (this != &rhs) {
key = rhs.getKey();
name = rhs.getName();
desc = rhs.getDes();
}
return *this;
}
private:
vector<T>theList;
int key;
string name;
}
类包装
class wrap{
public:
wrap(){ myList = new hashT[1000];
~wrap(){ delete[]myList;}
//getter
hashT<class T> *getHashing() const{
return mylist;
}
//setter
void setNextHash(hashT<class T> *hashelement){
mylist = hashelement;
}
private:
hashT<class T> *mylist;
}
您的类wrap
有多个错误。 hashT<class T>*
并不是将模板定义为返回类型的方式。
您必须写:
template<typename T>
hashT<T> *getHashing() const {
return mylist;
}
与setNextHash
相同。
但是,您不能制作模板变量,因此只有一种定义mylist
,就像hashT
一样wrap
模板类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.