繁体   English   中英

C ++模板可变参数类构造函数与参数包一起使用,但功能不起作用

[英]C++ Template Variadic Class Constructor working with Parameter Pack but functions not

所以我面临的问题是我的数据结构类constructor可以使我声明具有可变长度parameters的类:

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

但是,如果我添加了额外的public成员函数,则可以像这样向类中添加更多:

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':成员声明中的非法合格名称

C2059语法错误:“ {”

C2334'{'之前的意外令牌; 跳过表观功能体

这样的ConstructorsMember Functions之间的类模板是否有所不同? 您知道任何解决方法吗?

在类定义内,您不应重复Dynarray<T> :因此应为:

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

(我还删除了该类已经存在的重复typename T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM