我正在尝试创建一个BigInt类,该类包含带有D元素的std :: vector。
template<int D>
class BigInt
{
public:
std::vector<short> digit(D, 0);
};
我收到一条错误消息,指出'D'不是类型
答案 0 :(得分:5)
问题是default member initializer(因为C ++ 11)仅支持等号(或加括号)的初始化程序,但不支持 括号初始化程序。
您可以
template<int D>
class BigInt
{
public:
std::vector<short> digit = std::vector<short>(D, 0);
};
您还可以在构造函数中使用member initializer list代替默认成员初始化程序。
template<int D>
class BigInt
{
public:
std::vector<short> digit;
BigInt() : digit(D, 0) {}
};
顺便说一句:std::vector<short>(D, 0)
与std::vector<short>(D)
具有相同的作用;您可以方便地使用后者。