为什么整行以二维数组更改?

时间:2019-04-20 09:04:10

标签: c++

使用Visual Studio表单。

在file1.h中,我有一个带有私有布尔值的类,该布尔值设置为false。

public class Tile
{
private:
    bool hasBomb = false;

public:
    bool getBomb() { return hasBomb; }
    void setBomb(bool set) { hasBomb = set; }
...

在file2.h中,我对其进行二维排列

...
namespace {
    Tile tiles[sizeX][sizeY];
}
...

我将其设置为true,然后对其进行测试

...
tiles[0, 0]->setBomb(true);

MessageBox::Show("" + tiles[0, 0]->getBomb()); // returns True
MessageBox::Show("" + tiles[1, 0]->getBomb()); // also returns True ???
MessageBox::Show("" + tiles[0, 1]->getBomb()); // returns False
...

但是您可以看到我的整个行都变成了true,我不明白为什么。

那是为什么,我该如何解决?

2 个答案:

答案 0 :(得分:2)

tiles[0, 0]->setBomb(true);

这不是访问二维数组的正确方法,请使用双[]

tiles[0][0]->setBomb(true);

您的代码段实际上是在使用operator,

此运算符求值第一个操作数,然后将其丢弃并返回第二个操作数。这意味着您当前的代码等效于:

tiles[0]->setBomb(true);

答案 1 :(得分:1)

您需要这样编写才能访问2D阵列。

tiles[0][0]->setBomb(true);
cout << tiles[0][0]->getBomb()<<endl;
cout << tiles[1][0]->getBomb()<<endl;
cout << tiles[0][1]->getBomb()<<endl;