使用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,我不明白为什么。
那是为什么,我该如何解决?
答案 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;