模糊的重载C ++ for operator =

时间:2017-03-08 21:28:02

标签: c++

for (dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++)
{

    if (dungeonLevel = "1")
    {
        cout<< "You will be fighting the warrior Apollo";
        cout<< "Do you want to 1. attack 2. defend 3. dodge";
        if (turn = "1")
        {
            yourDamage = rand() % 5 + 0; //generates a number between 1 and 5

        }

这产生了一个模棱两可的错误

[错误]&{39; operator=&#39;模糊过载(操作数类型是&#39; std::string {aka std::basic_string<char>}&#39;和&#39; int&#39;)

我不知道对这些错误有任何了解。我希望你们能帮助我。

谢谢

1 个答案:

答案 0 :(得分:3)

 if (dungeonLevel = "1")

这是导致错误的行。你希望它是:

 if (dungeonLevel == 1)

我在这里做了两处改动:

首先,我将=符号(称为赋值运算符)替换为==符号,这是比较运算符。当您在运算符左侧为变量赋值时,可以使用赋值运算符(可以是固定值,如5,&#34; hello&#34;等等...)。它没有进行比较,因为你试图在你的if语句条件下进行比较。因此,您需要使用比较运算符(==),它检查左侧的语句是否与右侧的语句相同,并传递布尔值(true或false),具体取决于结果比较,告诉编译器是否进入if语句的正文。因此,您需要在if语句条件中使用(==)而不是(=)。

其次,我在if语句条件中从1中删除了撇号,因为你想要一个int值,而不是字符串。当您运行循环时,您会增加一个计数器,该计数器必须是int值。

另一件事

for (dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++)

在这一行中,您尚未声明dungeonLevel的数据类型(也许您在for循环之外执行了此操作)。它应该声明为int类型。

将您的for-loop标头更改为:

for (int dungeonLevel = 0; dungeonLevel < 5; dungeonLevel++) // Notice that I added the data type of dungeonlevel in its initialization statement