gpt4 book ai didi

c++ - 初始化具有大小的结构 vector 时出错

转载 作者:行者123 更新时间:2023-11-27 23:53:09 24 4
gpt4 key购买 nike

我有一个定义如下的结构

struct valindex {
int x;
int y;
valindex(int val, int index) : x(val), y(index) {}
};

尝试初始化此结构的 vector 时出现错误

vector<valindex> vals() // this works fine
vector<valindex> vals(20) // throws the error mentioned below when the size is specified

required from 'static _ForwardIterator std::__uninitialized_default_n_1<_TrivialValueType>::__uninit_default_n(_ForwardIterator, _Size) [with _ForwardIterator = valindex*; _Size = long unsigned int; bool _TrivialValueType = false]'

有人可以解释这个错误的原因并提供解决方案吗?

谢谢!

最佳答案

vector<valindex> vals();

之所以有效,是因为它声明了一个名为 vals 的函数不带参数并返回 vector<valindex> .参见 https://en.wikipedia.org/wiki/Most_vexing_parse .

vector<valindex> vals(20);

不起作用,因为它试图构造一个 vectorvalindex创建这样一个对象的要求之一是 valindexdefault-constructible .自 valindex不是默认可构造的,无法编译该行。

关于c++ - 初始化具有大小的结构 vector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768051/

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