Базовый класс:
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 и &), но я получаю ожидаемый идентификатор перед токеном '*'. Единственный способ, которым это работает, - это их нормальная инициализация, но что, если я хочу иметь постоянный урон?
Damage
является членом классаEntity
, поэтому его можно инициализировать только в конструкторе классаEntity
. Добавьте конструктор для своего классаEntity
и вызовите его из конструктора классаNinja
. - person john   schedule 22.05.2020const
членов в списке инициализаторов членов. Но это должен сделать конструктор базового класса. - person cigien   schedule 22.05.2020