У меня есть два класса юнитов и лучников.Арчер наследует от юнита.Я попытался использовать цепочку конструктора, чтобы установить статистику для базового класса, но статистика, кажется, установлена на ноль, если я использую следующий код:
#include<iostream>
using namespace std;
class Unit{
int damage = 0;
int curHp = 0;
int maxHp = 1;
int range = 0;
int cost = 0;
public:
Unit(int _damage,int _maxHp,int _range,
int _cost){
damage = _damage;
curHp = maxHp = _maxHp;
range = _range;
cost = _cost;
}
int getCost(){
return cost;
}
};
class Archer: public Unit{
int damage = 25;
int range = 50;
int maxHp = 100;
int cost = 150;
int stepSize = 25;
int returnedCoins = 0;
public:
Archer():Unit(damage,maxHp,range,
cost){};
};
int main()
{
Unit *curUnit = new Archer();
cout<< curUnit->getCost()<<endl;;
}
Вывод равен 0. Если я вызываю конструктора модуля сзначение вместо использования стоимости (например, 25), я получаю значение, которое я использовал.По какой-то причине базовое значение, которое я установил в классе лучника, совсем не используется.
Кроме того, я новичок в ООП, поэтому думаю, что я могу поступить неправильно.Я был бы счастлив, если бы кто-то показал мне правильный способ сделать это.