C++ C++;奇异值重置

C++ C++;奇异值重置,c++,C++,使用下面的代码时,它将平铺对象的x值设置为i,y值设置为j。但是如果我只打印y值是正确的,那么x值总是4095 代码: 主要代码: 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;

使用下面的代码时,它将平铺对象的x值设置为i,y值设置为j。但是如果我只打印y值是正确的,那么x值总是4095

代码:

主要代码:

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";
        }
    }

您没有正确使用阵列:

i,j
将始终返回
j
,因为这是逗号运算符的结果

Tile** tiles = new Tile*[4096];
for(int i = 0; i < 4096; i++)
    tiles[i] = new Tile[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";
        }
    }


   // Destruction! DON'T FORGET!
   for(int i = 0; i < 4096; i++)
       delete[] tiles[i];
   delete[] tiles; 
Tile**tiles=新Tile*[4096];
对于(int i=0;i<4096;i++)
瓷砖[i]=新瓷砖[4096];
对于(int i=0;i<4096;i++)
{
对于(int j=0;j<4096;j++)
{
tiles[i][j].x=i;
瓷砖[i][j].y=j;
}
}
对于(int i=0;i<4096;i++)
{
对于(int j=0;j<4096;j++)
{

难道我不知道你想用
Tile[40964096];
和所有类似的访问来做什么,但我肯定它没有达到你的目的。你是在和
Tile[4096]发生冲突,基本上是在做
Tile[4096]如果你想要一个2d数组,你需要使用两组方括号,而使用
new
有点麻烦:你有什么迫切的理由使用原始(c++风格)数组吗?如果没有,那么我强烈建议使用
std::vector
。当试图编译“Tile*tiles=new Tile[4096][4096],我得到了这个错误:2 IntelliSense:类型为“Tile(*)[4096]”的值不能用于初始化类型为“Tile*”@user1990950的实体请参阅我对该问题的评论中的链接。
Tile** tiles = new Tile*[4096];
for(int i = 0; i < 4096; i++)
    tiles[i] = new Tile[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";
        }
    }


   // Destruction! DON'T FORGET!
   for(int i = 0; i < 4096; i++)
       delete[] tiles[i];
   delete[] tiles; 
Tile * tiles = new Tile[4096]; // returned last 4096
    for(int i = 0; i< 4096;i++)
    {
        for(int j = 0;j< 4096;j++)
        {
            tiles[i,j].x = i; // the same as tiles[j].x = i;
            tiles[i,j].y = j; // the same as tiles[j].y = j;
        }
    }

///...