我正在为我的一个大学班级分配作业,并且遇到了一个“问题”,如果我在if语句/ while循环的表达式中使用函数,它将调用该表达式而不是提供布尔值值。我需要检查此函数的值是否等于所需值。我确定这是一个预期的功能,但是我们没有被教过如何正确检查此功能,而且我能够找到任何有关上述操作的参考。任何帮助表示赞赏。
string askYesNo(string question)
{
string playerChoice;
do
{
cout << question << " (YES/NO)" << endl;
cin >> playerChoice;
for (int i = 0; i < playerChoice.size(); i++)
{
playerChoice[i] = toupper(playerChoice[i]);
}
} while (playerChoice != "YES" && playerChoice != "NO");
return playerChoice;
}
void adventure()
{
if (askYesNo("You see a pile of gold in front of you. Do you want it?") == "YES")
{
cout << "As you approach, it moves forward and attacks you!\n";
do
{
askYesNo("\nDo you want to continue to battle?");
} while (askYesNo("\nDo you want to continue to battle?") == "YES");// WHY DOES THIS CALL THE FUNCTION?
}
else
{
cout << "Okay, cool.";
}
return;
}
期待测试功能是否正确。实际结果,它调用函数,导致函数被调用两次。
即使函数调用位于if语句内部,该函数仍将被调用。我不太确定Adventure()中的do-while循环的用途是什么,但是我建议您这样做:
std::string answer;
do
{
answer = askYesNo("\nDo you want to continue to battle?");
} while (answer == "YES");
这样,每个循环迭代仅调用一次该函数。希望这会有所帮助。