gpt4 book ai didi

c++ - 如何将值初始化为 vector 中声明的对象?

转载 作者:行者123 更新时间:2023-11-30 04:45:37 26 4
gpt4 key购买 nike

好吧,我的问题是如何为 vector 中创建的 coordinates 类的对象 cood 设置值。

#include <iostream>
#include <vector>

using namespace std;

class coordinates
{
public:
short int x;
short int y;
};

int main()
{
vector<coordinates> cood[1];
cood[1].x=(short int)4;
cood[1].y=(short int)5;

return 0;
}

我收到这个错误

class std::vector<coordinates>' has no member named 'y'.    
(for both x and y).

我尝试了不同的方法,但总是出现一些错误。

最佳答案

这个

vector<coordinates> cood[1];

表示vector<coordinates>的数组包含一个 vector<coordinates> . cood[1]也是错误的,因为数组索引从0, 1,..., n-1开始, 不是 1, 2,..., n .访问越界将导致 undefined behaviour ,因此发布的代码有一个 UB。

你应该有 cood[0]相反,这意味着 cood 的第一个元素数组(即 vector<coordinates> 类型)。显然是 vector<coordinates>没有成员(member)xy ,因此你会得到编译器错误。


你可能是想做

vector<coordinates> cood(1);

这是一个坐标 vector ,其中有一个 coordinates元素,它将由编译器生成的默认构造函数默认初始化。

但是,您可以直接 brace-list-initialization 对于像这样的琐碎类型:

std::vector<coordinates> cood{ {4, 5} };

这和你想做的一样。

关于c++ - 如何将值初始化为 vector 中声明的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182390/

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