使用类模板需要模板参数列表,没有合适的默认构造函数

时间:2016-11-07 04:21:42

标签: c++ class templates hashtable

我不确定我做错了什么。我正在尝试将字符串名称和密钥从类包装传递给类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;
 }

1 个答案:

答案 0 :(得分:0)

您的班级wrap有多处错误。 hashT<class T>*并非如何将模板定义为返回类型。

你必须写:

template<typename T>
hashT<T> *getHashing() const {
    return mylist;
}

setNextHash相同。

您无法制作模板变量,因此您只有一种方法可以定义mylist,使wrap成为模板类,就像hashT一样。