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

标签 c++ list compiler-errors pass-by-reference

我正在尝试用 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/

相关文章:

c++ - 无下拉菜单的Qt菜单栏(单级菜单栏)

Java 点列表

c++ - 如何进行时间分析

c++ - fatal error LNK1104 C++

python - 从列表列表中的字符串中删除字符

list - 谓词和列表搜索haskell

java - 类不是抽象类?

r - 为什么我的R函数gsynth出现此错误?

c++ - 无法在 VScode (macOS) 中将头文件链接到我的 main.cpp(clang 错误)

c++ - 如何找到大矩阵的行列式