不匹配'运营商[]' (操作数类型是' Briques'和' int')

时间:2016-11-24 12:00:33

标签: c++ debugging codeblocks

我在这一行上遇到错误:

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

3 个答案:

答案 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];