与"运算符[]"不匹配(操作数类型为"Briques"和"int")

no match for 'operator[]' (operand types are 'Briques' and 'int' )

本文关键字:Briques int 类型 运算符 不匹配 操作数      更新时间:2023-10-16

我在这一行有一个错误:

Briques brique = brique[i][j];

谚语:

与"运算符[]"不匹配(操作数类型为"Briques"和"int")...

我不明白为什么,因为BriquesTable.h中定义的类:

class Briques {
public:
int type;
bool state;
};

Table.h得到:

Briques brique[BOARD_WIDTH][BOARD_HEIGHT];

任何帮助将不胜感激。我认为该错误意味着类Briques不考虑数组?或者类似的东西...但我无法解决问题。

另外,如果您需要有关某些内容的更多代码,请告诉我,新的! :D

你的代码Briques brique = brique[i][j];不是你想要的。

您希望声明一个变量brique从外部作用域中的另一个变量brique初始化,但编译器首先在初始化作用域中查找最接近的变量。

因为您在局部作用域(您要声明的变量)中有一个名为brique的变量,所以它用于初始化,但您要声明的这个本地briqueBriques类型(与您想要的类型不同,它是Brique[][]类型),实际上它没有声明operator[]

只需更改您的声明:

Briques b = brique[i][j];

避免代码中的名称冲突。

不能使用brique作为新变量名。

如果这样做,brique[x][y]将引用新定义的brique并导致错误。

Briques brique[BOARD_WIDTH][BOARD_HEIGHT];
Briques brique = brique[i][j];

在这两行中,您有两个相同名称的声明brique

在第二行brique[i][j];

引用您声明brique最后一个对象:

Briques brique = brique[i][j];

所以你正在做这样的事情:

Object a = a[i][j];