gpt4 book ai didi

c++ - 为什么在初始化 std::vector 时不能使用模板整数?

转载 作者:行者123 更新时间:2023-12-01 14:37:21 24 4
gpt4 key购买 nike

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

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) 具有相同的效果;为了方便起见,您可以使用后者。

关于c++ - 为什么在初始化 std::vector 时不能使用模板整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62484744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com