我在这一行上遇到错误:
Briques brique = brique[i][j];
话说:
不匹配'运营商[]' (操作数类型是' Briques'和' int')...
我不明白为什么,因为Briques
是Table.h
中定义的类:
class Briques {
public:
int type;
bool state;
};
Table.h
得到了:
Briques brique[BOARD_WIDTH][BOARD_HEIGHT];
任何帮助将不胜感激。我认为错误意味着班级Briques
没有考虑到数组?或类似的东西......但我无法解决问题。
此外,如果您需要更多关于某些事情的代码,请告诉我,新来的! :D
答案 0 :(得分:3)
您的代码Briques brique = brique[i][j];
不是您想要的。
您希望在外部作用域中声明从另一个变量brique
初始化的变量brique
,但编译器首先在作用域中查找最接近的变量。
因为在本地范围(您要声明的那个)中有一个名为brique
的变量,所以它用于初始化,但是您声明的本地brique
的类型为{{ 1}}(与你想要的类型Briques
不同),实际上它没有声明Brique[][]
。
只需更改您的声明:
operator[]
避免代码中存在名称冲突。
答案 1 :(得分:1)
您不能将brique
用作新的变量名称。
如果您这样做,brique[x][y]
会引用新定义的brique
并导致错误。
答案 2 :(得分:1)
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];