Ошибка C ++: класс / объект не был объявлен в этой области - PullRequest
0 голосов
/ 18 марта 2020

Я совершенно новичок в C ++, и я пытаюсь создать очень простую текстовую боевую систему, но я продолжаю получать сообщение об ошибке: "objPlayer не был объявлен в этой области".

Весь код написан ранее функция main ():

#include <iostream>

using namespace std;


    //DECLARE THE UNIT CLASS
    class generalUnit {
    public:
    int health; //the amount of health the unit has
    };


    //DECLARE THE PLAYER THOUGH THE UNIT CLASS 
    void generatePlayer() {
    generalUnit objPlayer;
    int objPlayer.health = 100;
    }


    //DECLARE AND INITIALIZE ALL COMMANDS
    //CHECK STATS
    void comCheckStats() {
        cout << objPlayer.health << endl;
    }

1 Ответ

1 голос
/ 18 марта 2020

Вам не нужно создавать переменную внутри класса, указывающую на объект этого класса, который вы используете. Он уже объявлен и называется this.

С оператором -> вы можете получить доступ к переменным-членам из this. Вот так:

#include <iostream>
#include <string>

using namespace std;

class Player
{
public:
    int health;

    // this is constructor
    Player(int health_at_start)
    {
        this->health = health_at_start;
    }

    void comCheckStats()
    {
        cout << this->health << '\n';
    }
};

int main()
{
    // create player with 100 health
    Player p1(100);
    p1.comCheckStats();

    // create player with 200 health
    Player p2(200);
    p2.comCheckStats();
}

Как видите, я использую что-то под названием constructor для создания нового экземпляра Player. Это просто функция без возвращаемого типа, объявленная с тем же именем, что и класс. Он инициализирует начальные данные переменной-члена, и вы также можете передать ей некоторые значения.

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