2017-04-11 96 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

一直在努力这在上周几乎是不间断的,你只是救了我的命。非常感谢! –

相关问题