所以我面临的问题是我的数据结构类constructor
允许我声明可变长度为parameters
的类:
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&#39; AddGroup&#39;:成员声明中的非法限定名称
C2059语法错误:&#39; {&#39;
C2334之前的意外令牌&#39; {&#39;跳过明显的功能体
Constructors
和Member Functions
之间的类模板是否有区别?你知道任何解决方法吗?
答案 0 :(得分:3)
在类定义中,您不应重复Dynarray<T>
:
所以它应该是:
template<typename... Arguments>
void AddGroup(T item, Arguments...)
{
size += sizeof...(Arguments);
}
(我还删除了该类已经存在的重复typename T
。)