![](/img/trans.png)
[英]Can I use std::vector as a template parameter or does it need to be std::vector<T>?
[英]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.