если выражение оператора вызывает функцию, нужно проверить, если правда, а не - PullRequest
0 голосов
/ 09 октября 2019

Я работаю над заданием для одного из моих классов колледжа, и у меня возникает «проблема», когда, если я использую функцию в выражении цикла 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;
}

Ожидается проверить, является ли функция истинной. Фактический результат, он вызывает функцию, в результате чего функция вызывается дважды.

1 Ответ

1 голос
/ 09 октября 2019

Даже если вызов функции находится внутри оператора if, функция все равно будет вызываться. Я не совсем уверен, какова цель цикла do-while в adventure (), но вот что я рекомендую:

    std::string answer;
    do
    {
        answer = askYesNo("\nDo you want to continue to battle?");
    } while (answer == "YES");

Таким образом, функция будет вызываться только один раз за итерацию цикла,Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...