为什么在初始化 std::vector 时不能使用模板整数?
Why can't I use a template integer when initializing a std::vector?
我正在尝试创建一个 class BigInt,其中包含 std::vector 和 D 元素。
template<int D>
class BigInt
{
public:
std::vector<short> digit(D, 0);
};
我收到一条错误消息,指出 'D' 不是类型
问题是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)
效果一样;为了方便起见,您可以使用后者。
我正在尝试创建一个 class BigInt,其中包含 std::vector 和 D 元素。
template<int D>
class BigInt
{
public:
std::vector<short> digit(D, 0);
};
我收到一条错误消息,指出 'D' 不是类型
问题是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)
效果一样;为了方便起见,您可以使用后者。