класс «Ниндзя» не имеет поля с именем «Урон»

Базовый класс:

class Entity {

public:

    // friend
    // e1 attacker, e2 target
    friend void Attack( Entity &e1, Entity &e2 );

    // methods set attributes
    virtual void setDamage ( int x ) { this -> Damage = x; }
    virtual void setHealthPoints ( int x) { this -> HealthPoints = x; }

    // methods return attributes
    virtual int getDamage ( ) { return Damage ; }
    virtual int getHealthPoints ( ) { return HealthPoints; }

protected:

    // Attributes
    int Damage;
    int HealthPoints;

};

Производный класс:

class Ninja: public Entity{

public:

    // Ninja constructor
    Ninja ( int x, int y )
    : Damage ( x ), HealthPoints ( y )

};

Редактировать: Эй, я продолжаю получать «класс« Ниндзя »не имеет поля с именем« Урон »в коде, упомянутом ранее, а также HealthPoints (извините, это предложение было удалено после публикации вопроса)

Я попытался указать Damage и HealthPoints ( * , this и &), но я получаю ожидаемый идентификатор перед токеном '*'. Единственный способ, которым это работает, - это их нормальная инициализация, но что, если я хочу иметь постоянный урон?


person Divizia de Lemn    schedule 22.05.2020    source источник
comment
Damage является членом класса Entity, поэтому его можно инициализировать только в конструкторе класса Entity. Добавьте конструктор для своего класса Entity и вызовите его из конструктора класса Ninja.   -  person john    schedule 22.05.2020
comment
Вы можете просто инициализировать const членов в списке инициализаторов членов. Но это должен сделать конструктор базового класса.   -  person cigien    schedule 22.05.2020
comment
Сущности нужен конструктор, а конструкторам нужны фигурные скобки {}   -  person QuentinUK    schedule 22.05.2020