繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM