类中"=="运算符的问题

Issue with "==" operator in a class

本文关键字:问题 运算符 类中      更新时间:2023-10-16

我在class room中的代码有问题。每当我尝试让房间构造函数(如下所示)将字符放在数组ARoomADisc中,并且它与我尝试使用break忽略的字符相同,当我使用APrint()时,所有值都将忽略。

room::room(int Si, int Sd)
{
    //makes ADisc and ARoom blank
    for(int d=1; d<=25; d++)
    {
        for(int i=1; i<=78; i++)
        {
            this->SetSpot(i,d, char(0), "0");
        }
    }
    //this makes some filled
    for(int i=1; i<=Si; i++)
    {
        for(int d=1; d<=Sd; d++)
        {
            this->SetSpot(i,d, ' ', "0");
        }
    }
}

setSpot()

void SetSpot(int i, int d, char ch, string disc)
{
    int Ni = i-1;
    int Nd = d-1;
    this->ARoom[Nd][Ni]=ch;
    this->ADisc[Nd][Ni]=disc;
}

aprint()

void Aprint()
{
    system("CLS");
    for(int d=0; d<25; d++)
    {
    if(this->ARoom[d][0]==char(0))
        break;
    cout << "[";
        for(int i=0; i<78; i++)
        {
            if(this->ARoom[i][d]==char(0))
                break;
            cout << this->ARoom[d][i];
        }
    cout << "]" << endl;
    }
    int r = 0;
    for(int d=0; d<25; d++)
    {
        for(int i=0; i<78; i++)
        {
            if(this->ADisc[d][i]=="0")
            {
                break;
            }
            else
            {
                r++;
                cout << "[" << r << "," << this->ARoom[d][i] << "]: " << this->ADisc[d][i] << endl;
            }
        }
    }
}

main()

int main()
{
    room Spawn(10,10);
    Spawn.SetSpot(5,1, char(1), "me");
    Spawn.SetSpot(4,1, char(2), "you");
    Spawn.Aprint();
}

返回

[   ☻☺     ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
Process returned 0 (0x0)   execution time : 0.039 s
Press any key to continue.

如果我将if(this->ADisc[d][i]=="0")更改为 if(this->ADisc[d][i]=="me"),那么我得到了

[   ☻☺     ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[          ]
[1, ]: 0
[2, ]: 0
[3, ]: 0
[4,☻]: you
[5, ]: 0
[6, ]: 0
[7, ]: 0
[8, ]: 0
[9, ]: 0
[10, ]: 0
[11, ]: 0
[12, ]: 0
[13, ]: 0
[14, ]: 0
[15, ]: 0

它与[1876, ]: 0相关,但不打印[3,☺]: me。我该如何修复或解决此问题?

您的问题是使用" break"。"断裂"是一个命令,它突破了当前的循环结构。

当您搜索" 0"(空图块)时,它在看到一个空的一旦取消了整个行的其余版本。

当您搜索" Me"(播放器瓷砖?)时,它称为" Me"瓷砖时,请跳过" Me"瓷砖的印刷品并取消该行的其余部分的打印,因此没有任何行一个"我"很好。

因此,在这里摆脱休息会阻止这个问题。

~~~

但是,您提到它不是在打印要忽略的角色,但是问题是您的if statement明确地告诉它不是在这种情况下打印瓷砖信息,因此,很难知道您的意图行为是什么。也许您可以在没有IF语句的情况下尝试,并告诉我们是否还有任何问题。