I'm sorry if I am asking something that has been asked many times before here. I am very new to C++. I want to know how to make a derived class inherit copies of the private attributes of its base class. Either that, or be able to modify them via public methods, such as getters and setters, from the base class.
Essentially, I have a Person class and it inherits from the Creature class. I want Person type objects to have attributes like in the Creature class. I want to private attributes in the Creature class to stay private because I was taught that only class functions should be public, not class variables. However, I can't seem to call the Creature class's public methods in a function, and the Person class doesn't seem to inherit them or copies thereof.
The reason I am refusing to simply make the private attributes public is because I want to learn proper programming techniques. I am not sure if this situation is an exception to the rule or not.
I have cpp files that handle the implementation. Hopefully, this will be enough to help you answer my question. My Base Class:
/***
File: Creature.h
Desc: Contains Creature Class Definitions.
This is the base class for the Animal, Person, and PlayerCharacter classes.
Author: LuminousNutria
Date: 5-7-18
***/
#include <string>
#ifndef _CREATURE_H_
#define _CREATURE_H_
class Creature
{
private:
// General Information
std::string speciesName;
int hitpoints;
int movement;
// Physical Attributes
int strength;
int willpower;
int intelligence;
int leadership;
public:
// setters
void setSpeciesName(const std::string a);
void setHitpoints(const int a);
void setMovement(const int a);
void setStrength(const int a);
void setWillpower(const int a);
void setIntelligence(const int a);
void setLeadership(const int a);
// getters
std::string getSpeciesName();
int getHitpoints();
int getLoyalty();
int getMovement();
int getStrength();
int getWillpower();
int getIntelligence();
int getLeadership();
// modders
void modHitpoints(const int a);
void modMovement(const int a);
void modStrength(const int a);
void modWillpower(const int a);
void modIntelligence(const int a);
void modLeadership(const int a);
};
My Derived Class:
/***
File: Person.h
Desc: Contains Person Class Definitions.
This is a derived class of the Creature class.
Author: LuminousNutria
Date: 5-7-18
***/
#include "Creature.h"
#include <string>
#ifndef _PERSON_H_
#define _PERSON_H_
class Person
{
protected:
std::string personName;
int loyalty;
int experience;
int level;
int cash;
public:
// constructors
Person();
Person(const std::string pName, const int loy, const int exp,
const int lvl, const int c,
const std::string sName, const int hp, const int mov,
const int stre, const int will, const int intl,
const int lead);
// setters
void setPersonName(std::string pName);
void setLoyalty(const int loy);
void setExperience(const int exp);
void setLevel(const int lvl);
void setCash(const int c);
// getters
std::string getPersonName();
int getLoyalty();
int getExperience();
int getLevel();
int getCash();
// modders
void modLoyalty(int a);
void modExperience(int a);
void modLevel(int a);
void modCash(int a);
};
#endif
Implementation of the Creature Class's setSpeciesName method:
void Creature::setSpeciesName(const std::string a)
{
speciesName = a;
}