gpt4 book ai didi

c++ - 按引用传递列表时出错 (C++)

转载 作者:行者123 更新时间:2023-11-30 02:44:15 25 4
gpt4 key购买 nike

我正在尝试用 C++ 编写一个子例程来获取一个单元格在方形网格上的位置并返回其邻居的列表,因此对于大多数单元格它将返回 4 个邻居,但边缘上的单元格只会有 3 个,角落里只有 2 个。我不是一个非常熟练的 C++ 程序员,所以我在这里查找了一些帮助,以通过引用传递列表 (C++ pass list as a parameter to a function)。

我收到这个错误:

In function ‘void findNeighbours(int, int, int, int, std::list<int, std::allocator<int> >&)’:

error: invalid conversion from ‘int*’ to ‘int’

这是我的代码:

void findNeighbours(int x, int y, int xSIZE, int ySIZE, list<int>& neighbours){
int n[2]={x-1,y};
int e[2]={x,y+1};
int s[2]={x+1,y};
int w[2]={x,y-1};
switch(x){
case 0: {neighbours.push_back(s);}
case xSIZE-1: {neighbours.push_back(n);}
default: {neighbours.push_back(n);neighbours.push_back(s);}
}
switch(y){
case 0: {neighbours.push_back(e);}
case ySIZE-1: {neighbours.push_back(w);}
default: {neighbours.push_back(e);neighbours.push_back(w);}
}
}

导致错误的行似乎是这一行: 案例 0:{neighbours.push_back(s);}

但我看不出我在做什么与我查找的示例(上面链接)不同。

正如我所说,我不是最精通 C++ 的编码人员,所以请尽可能用简单的语言进行解释。我习惯使用 Python,所以我不太擅长指针等。

预先感谢您的帮助,

FJC

最佳答案

变量 s 被定义为两个元素的数组

int s[2]={x+1,y};

虽然列表的值类型是int类型

list<int>& neighbours

你正在尝试 push_back 数组而不是 int 类型的对象

case 0: {neighbours.push_back(s);}

我认为至少由于这个奇怪的陈述,无论如何该函数都没有意义

case xSIZE-1: {neighbours.push_back(n);}

案例标签应为常量表达式。

关于c++ - 按引用传递列表时出错 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25403228/

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