我不确定我做错了什么。我正在尝试将字符串名称和密钥从类包装传递给类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;
}
答案 0 :(得分:0)
您的班级wrap
有多处错误。 hashT<class T>*
并非如何将模板定义为返回类型。
你必须写:
template<typename T>
hashT<T> *getHashing() const {
return mylist;
}
setNextHash
相同。
您无法制作模板变量,因此您只有一种方法可以定义mylist
,使wrap
成为模板类,就像hashT
一样。