2017-04-11 95 views
0

所以我面臨的問題是,我的數據結構類constructor作品讓我用parameters可變長度聲明類:C++模板可變參數類的構造函數與參數包工作,但功能不

template<class T> 
class Dynarray 
{ 
    private: 
     int size; 
    public: 
     template<class T, typename... Arguments> 
     Dynarray(T item,Arguments...) 
     { 
      size = sizeof...(Arguments); 
     } 
} 

但是,如果我添加了額外的公共成員函數,所以我可以像這樣的類添加更多:

template<class T> 
class Dynarray 
{ 
    private: 
     int size; 
    public: 
     template<class T, typename... Arguments> 
     Dynarray(T item,Arguments...) 
     { 
      size = sizeof...(Arguments); 
     } 
     ///////////////////////////////////////////////////////// 
     template<class T, typename... Arguments> 
     void Dynarray<T>::AddGroup(T item, Arguments...) 
     { //Errors C2838, C2059, C2334 

      size += sizeof...(Arguments); 

     } 
     ///////////////////////////////////////////////////////// 
} 

我得到錯誤代碼:

C2838 'AddGroup': illegal qualified name in member declaration

C2059 syntax error: '{'

C2334 unexpected token(s) preceding '{'; skipping apparent function body

這是否有區別當類模板ConstructorsMember Functions這樣?你知道任何解決方法嗎?

回答

3

裏面的類定義,你不應該重複Dynarray<T>: 所以它應該是:

template<typename... Arguments> 
void AddGroup(T item, Arguments...) 
{ 
    size += sizeof...(Arguments); 
} 

(我也刪除重複typename T中已經存在的類。)

+1

一直在努力這在上週幾乎是不間斷的,你只是救了我的命。非常感謝! –

相關問題