使用下面的代碼時,它將Tile對象的x值設置爲i,將y值設置爲j。但是,如果我打印值只y值是正確的,x值始終是4095C++奇怪值重置
代碼:
主要代碼:
Tile * tiles = new Tile[4096,4096];
for(int i = 0; i< 4096;i++)
{
for(int j = 0;j< 4096;j++)
{
tiles[i,j].x = i;
tiles[i,j].y = j;
}
}
for(int i = 0; i< 4096;i++)
{
for(int j = 0;j< 4096;j++)
{
cout << "X (Should be " <<i<<"): "<< tiles[i,j].x << " " << "Y (Should be " <<j<<"): "<< tiles[i,j].y << "\n";
}
}
Tile.h:
#pragma once
class Tile
{
public:
int x, y;
};
我不知道你正在嘗試用'分片[4096,4096]做;'和所有類似的訪問,但我相信它不會做你的意思。你正在陷入[逗號運算符](http://en.wikipedia.org/wiki/Comma_operator),並且基本上正在執行'Tile [4096];'。如果你想要一個二維數組,你需要使用兩組方括號,而使用'new'有點費勁:http://stackoverflow.com/questions/936687/how-do-i-declare-a-2d -array-in-c-using-new – BoBTFish
你有任何迫切的理由使用原始(C++風格)數組嗎?如果不是,那麼我強烈建議使用'std :: vector'來代替。 – Grizzly