Передача переменной из main в публичную функцию класса? - PullRequest
0 голосов
/ 04 июля 2018

Мне было интересно, как в этой ситуации я могу передать переменную из main в публичную функцию класса. В этой ситуации переменная здоровья не меняется вообще, хотя должна. Вот мой код:

class PlayerCharacter
{
public:
    void SetHealth(int Health)
{
    m_health = Health;
}
int GetHealth()
{
    return m_health;
}
private:
int m_health;
int m_maxhealth;
};


int main()
{
    PlayerCharacter PC;
    bool playing = true;
    int Choice;
    int v1;
    int v2;
    while (playing)
    {
        PrintMainMenu();
        cout << "Set Health And Max Health" << endl;
        cin >> Choice;
        v1 = Choice;
        cin >> Choice;
        v2 = Choice;
        PC.SetHealth(v1);
        PC.SetMaxHealth(v2);

        system("CLS");
    }
return 0;
}

Есть что-то, чего я здесь не хватает? Спасибо.

изменить: Весь мой код

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

По вашей кодовой ссылке ваша функция PrintMainMenu() каждый раз создает совершенно новый Character. Он не имеет отношения к редактируемому в main().

Вы должны изменить его, чтобы принять Character в качестве ссылки и использовать его для печати вашей статистики:

void PrintMainMenu(Character& PC) {
  ...
}
0 голосов
/ 04 июля 2018

В функции void PrintMainMenu() вы создаете нового персонажа. Вам нужно передать ссылку на своего персонажа из основного в эту функцию.

0 голосов
/ 04 июля 2018

Вы можете попробовать использовать getline (cin, input) вместо cin >>, так как чтение напрямую с помощью cin небезопасно и, насколько я знаю, не удаляет символ новой строки. Кроме того, он не выполняет проверку длины. Так что было некоторое время не использовать C ++, но если я правильно помню, getline работает лучше.

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