2016-11-07 61 views
0

我不確定我做錯了什麼地方。我attemping從類包裝傳遞字符串名稱和關鍵類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

wrap類有多個錯誤。 hashT<class T>*這不是您如何將模板定義爲返回類型。

你必須寫:

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

同爲setNextHash

儘管你不能創建模板變量,所以你只有一種方法來定義mylist,使wrap成爲一個模板類,就像hashT一樣。

+0

而且不可能像'hashT * mylist;' – Danh

+0

@Danh Jup那樣宣佈成員忘記了那個抱歉:)謝謝 – Rakete1111

相關問題