C++ 与';操作员[]和#x27;(操作数类型为';Briques';和';int';)
我在这行有个错误:C++ 与';操作员[]和#x27;(操作数类型为';Briques';和';int';),c++,debugging,codeblocks,C++,Debugging,Codeblocks,我在这行有个错误: Briques brique = brique[i][j]; 说: “运算符[]”不匹配(操作数类型为“Briques”和“int”) 我不明白为什么,因为Briques是表中定义的一个类。h: class Briques { public: int type; bool state; }; 和Table.hgot: Briques brique[BOARD_WIDTH][BOARD_HEIGHT]; 任何帮助都将不胜感激。我认为这个错误意味着类Briq
Briques brique = brique[i][j];
说:
“运算符[]”不匹配(操作数类型为“Briques”和“int”)
我不明白为什么,因为Briques
是表中定义的一个类。h
:
class Briques {
public:
int type;
bool state;
};
和Table.h
got:
Briques brique[BOARD_WIDTH][BOARD_HEIGHT];
任何帮助都将不胜感激。我认为这个错误意味着类Briques
没有考虑数组?或者类似的事情。。。但我不能解决这个问题
另外,如果您需要更多关于某件事的代码,请告诉我,这里是新的!:D不能使用
brique
作为新变量名
如果执行此操作,
brique[x][y]
将引用新定义的brique
,并将导致错误。不能将brique
用作新变量名
如果执行此操作,
brique[x][y]
将引用新定义的brique
,并将导致错误。您的代码Briques-brique=brique[i][j]代码>不是您想要的
您希望声明一个变量brique
,该变量是从外部作用域中的另一个变量brique
初始化的,但编译器首先要查找作用域中最接近的变量进行初始化
因为您在本地范围(您正在声明的范围)中有一个名为brique
的变量,它用于初始化,但是您正在声明的这个本地brique
类型是Briques
(不同于您想要的类型是brique[]
),实际上它没有操作符[]
已声明
只需更改您的声明:
Briques b = brique[i][j];
避免代码中的名称冲突。您的代码Briques brique=brique[i][j]代码>不是您想要的
Briques brique[BOARD_WIDTH][BOARD_HEIGHT];
Briques brique = brique[i][j];
您希望声明一个变量brique
,该变量是从外部作用域中的另一个变量brique
初始化的,但编译器首先要查找作用域中最接近的变量进行初始化
因为您在本地范围(您正在声明的范围)中有一个名为brique
的变量,它用于初始化,但是您正在声明的这个本地brique
类型是Briques
(不同于您想要的类型是brique[]
),实际上它没有操作符[]
已声明
只需更改您的声明:
Briques b = brique[i][j];
避免代码中的名称冲突
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];
在这两行中,您有两个相同名称的声明brique
第二行brique[i][j]代码>
指您已声明的最后一个名为brique
的对象:
Briques brique = brique[i][j];
所以你在做这样的事情:
Object a = a[i][j];
是关于名字的。如果您声明一个新变量brique
,它将隐藏该名称以前的用法。@BoPersson ohhh收到了,谢谢!那是个新手犯的错误,很有趣,是关于名字的。如果您声明一个新变量brique
,它将隐藏该名称以前的用法。@BoPersson ohhh收到了,谢谢!那是个新手犯的错误很有趣谢谢。。。这似乎奏效了!这不是“模棱两可”。如果不明确,则无法编译。该标准准确地描述了程序的语义是什么(正如您在第二段中所描述的)。这并不意味着OP的意图。@LightnessRacesSinorbit你说得对,“模棱两可”在这里是一种失调。我编辑了我的回答谢谢。。。这似乎奏效了!这不是“模棱两可”。如果不明确,则无法编译。该标准准确地描述了程序的语义是什么(正如您在第二段中所描述的)。这并不意味着OP的意图。@LightnessRacesSinorbit你说得对,“模棱两可”在这里是一种失调。我编辑了我的答案