There's several ways accessing objects' private member variables. The easiest way is using accessor methods from that same class.
//player.h#pragma onceclass player{public: void getHP(); void setHP(int hitpoints);private: int m_HP;};void player::getHP() { int hitpoints = m_HP; cout << hitpoints << endl; }void player::setHP(int hitpoints) { m_HP = hitpoints; }
use it in the driver program
//main.cpp#include <iostream>#include "player.h"int main(){ player xyz; xyz.setHP(10); xyz.getHP(); xyz.setHP(30); xyz.getHP();}
There's also a way in accessing one objects member variable with another objects member variable. For example, simulating a simple fighting game like so:
//main.cpp#include <cstdlib>#include <iostream>#include "monster.h"#include "player.h"using namespace std;int main(int argc, char *argv[]){ monster monst; player xyz; xyz.setHP(20); monst.setHP(30); cout << "monster's HP = " << monst.getHP() << endl; cout << "players's HP = " << xyz.getHP() << endl; cout << "monster attacks" << endl; monst.fight(xyz); xyz.fight(monst); cout << "monster's HP = " << monst.getHP() << endl; cout << "player's HP = " << xyz.getHP() << endl; system("PAUSE"); return EXIT_SUCCESS;}
//player.h#ifndef PLAYER_H#define PLAYER_Hclass monster;class player{ public: void fight(monster& monster); void setHP(int hitpoints); int getHP(); void takeDamage(int damage); private: int m_HP;};#endif
//monster.h#ifndef MONSTER_H#define MONSTER_Hclass player;class monster{ public: void fight(player& player); void setHP(int hitpoints); int getHP(); void takeDamage(int damage); private: int monster_HP;};#endif
//monster.cpp#include "monster.h"#include "player.h"void monster::takeDamage(int damage){ monster_HP -= damage;}int monster::getHP(){ return monster_HP;}void monster::setHP(int hitpoints){ monster_HP = hitpoints;}void monster::fight(player& player){ int damage = 1; player.takeDamage(damage);}
//player.cpp#include "player.h"#include "monster.h"void player::takeDamage(int damage){ m_HP -= damage;}int player::getHP(){ return m_HP;}void player::setHP(int hitpoints){ m_HP = hitpoints;}void player::fight(monster& monster){ int damage = 1; monster.takeDamage(damage);}