2017-04-11 3 views
0

だから私は直面しています問題は、私のデータ構造クラスことを私はparametersの可変長でクラスを宣言することができconstructor作品です私はそうのようなクラスにさらに追加することができますので、私は追加のパブリックメンバ関数を追加します。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, 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

が取り組んできこれは先週のほとんどノンストップで、あなたは私の人生を救った。どうもありがとうございます! –

関連する問題