繁体   English   中英

为什么我在初始化 std::vector 时不能使用模板 integer?

[英]Why can't I use a template integer when initializing a std::vector?

我正在尝试创建一个包含带有 D 元素的 std::vector 的 class BigInt 。

template<int D>
class BigInt
{
    public:
        std::vector<short> digit(D, 0);
};

我收到一条错误消息,指出“D”不是一种类型

问题是默认成员初始化器(自 C++11 起)仅支持等号(或大括号)初始化器,但不支持括号初始化器。

你可以

template<int D>
class BigInt
{
    public:
        std::vector<short> digit = std::vector<short>(D, 0);
};

您还可以在构造函数中使用成员初始值设定项列表,而不是默认成员初始值设定项。

template<int D>
class BigInt
{
    public:
        std::vector<short> digit;

        BigInt() : digit(D, 0) {}
};

顺便说一句: std::vector<short>(D, 0)std::vector<short>(D) ) 具有相同的效果; 为方便起见,您可以使用后者。

暂无
暂无

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

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