Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 与';操作员[]和#x27;(操作数类型为';Briques';和';int';)_C++_Debugging_Codeblocks - Fatal编程技术网

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你说得对,“模棱两可”在这里是一种失调。我编辑了我的答案