与"运算符[]"不匹配(操作数类型为"Briques"和"int")
no match for 'operator[]' (operand types are 'Briques' and 'int' )
我在这一行有一个错误:
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
你的代码Briques brique = brique[i][j];
不是你想要的。
您希望声明一个变量brique
从外部作用域中的另一个变量brique
初始化,但编译器首先在初始化作用域中查找最接近的变量。
因为您在局部作用域(您要声明的变量)中有一个名为brique
的变量,所以它用于初始化,但您要声明的这个本地brique
是Briques
类型(与您想要的类型不同,它是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];
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 是否可以从int转换为enum类类型
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 'short int'持有的值溢出,但"自动"不会溢出?
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 调用'begin(int [n])'没有匹配函数
- 没有显式声明的int[]中的foreach
- 在c++中访问int到类对象的映射时出错
- 为什么我无法更改"set<set>"循环中的值<int>
- 长 长 int 不要 长 int 好
- C++程序在循环后给出奇怪的int值
- 如何计算数据类型的范围,例如int
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 与"运算符[]"不匹配(操作数类型为"Briques"和"int")