While I was writing some code I noticed something:
In this program
Code:
#include <iostream>
class Character
{
public:
Character(int health, int carryWeight, int stamina, int magicka, std::string name, std::string race)
: mHealth(health),
mCarryWeight(carryWeight),
mStamina(stamina),
mMagicka(magicka),
mName(name),
mRace(race)
{}
virtual void Speak()
{
std::cout << "Default Character\n";
}
void ShowCharacterInfo()
{
std::cout << "Health: " << mHealth << "\n";
std::cout << "Carry Weight: " << mCarryWeight << "\n";
std::cout << "Stamina: " << mStamina << "\n";
std::cout << "Magicka: " << mMagicka << "\n";
std::cout << "Name: " << mName << "\n";
std::cout << "Race: " << mRace << "\n";
}
protected:
int mHealth;
int mCarryWeight;
int mStamina;
int mMagicka;
std::string mName;
std::string mRace;
};
class Nord : public Character
{
public:
Nord(int health, int carryWeight, int stamina, int magicka, std::string name, std::string race)
: Character(health, carryWeight, stamina, magicka, name, race){}
void Speak()
{
std::cout << "I am a " << mRace << " my name is " << mName << "\n";
}
};
int main()
{
Nord Ulfric(100, 100, 80, 190, "Ulfric", "Nord");
Nord Harkon(250, 150, 50, 150, "Harkon", "Nord");
Character& NordUlfric = Ulfric;
Character& NordHarkon = Harkon;
Ulfric.ShowCharacterInfo();
std::cout << "\n";
Harkon.ShowCharacterInfo();
std::cout << "\n";
Ulfric.Speak();
Harkon.Speak();
return 0;
}
This constructor in Nord:
Code:
Nord(int health, int carryWeight, int stamina, int magicka, std::string name, std::string race)
: Character(health, carryWeight, stamina, magicka, name, race){}
Is a pain to update everytime I add a variable to Character. I have to then edit the constructor in the other class. Is there a simpler way? Like is there a way that Nord can just inherit the constructor of Character so I dont have to keep updating it? I would have to do that for all other classes if I had more as well and that would start to be a real pain, there has to be an easier way, I want to be able to just update the constructor in Character and it updates for all that inherit from it.