Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to initialize instances of classes?
    primarykey
    data
    text
    <pre><code>//main.cpp #include "Monsters.h" #include "Hero.h" #include "Monsters.h" #include "Characters.h" #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { </code></pre> <p>When i created my object it took those parameters and initialised them to it right? So why when i called their methods, it returned a different value? For example, I initialized them here while created my object at the same time:</p> <pre><code> Hero Me(100,20,30,40); Monsters m(100,16,18,20);//creates a monster object and uses overloaded constructor to initialize Me.getHp();//expected 100, but got a long negative random number m.getHp();//expected 100, but got a long negative random number also //Why must i use setHp() and setAttack() when i already initialized them with the constructor? Me.setAttack(89); Me.setHp(100); m.setAttack(40); m.setHp(100); cout &lt;&lt; "\nAttacking!\n"; while ((Me.getHp() &gt; 0) &amp;&amp; (m.getHp() &gt; 0)) { cout &lt;&lt; "\nYour hp is: " &lt;&lt; Me.getHp() &lt;&lt; endl; cout &lt;&lt; "The enemy's hp is: "&lt;&lt; m.getHp() &lt;&lt; endl; cout &lt;&lt; "\nThe monster has attacked you!\n"; cout &lt;&lt; "You received " &lt;&lt; m.getAttack() &lt;&lt; " damage;" &lt;&lt; endl; Me.damageTaken(m.getAttack()); if(Me.getHp() &gt; 0)//Check if still alive { cout &lt;&lt; "\nYour hp is now: " &lt;&lt; Me.getHp() &lt;&lt; endl; //cout &lt;&lt; "Enemy hp is: "&lt;&lt; m.getHp() &lt;&lt; endl; cout &lt;&lt; "\nNow you attacked!\nYou have dealt "&lt;&lt; Me.getAttack() &lt;&lt; " Damage" &lt;&lt; endl; m.damageTaken(Me.getAttack()); if(m.getHp() &gt; 0)//Check if still alive { cout &lt;&lt; "Enemy hp is now: " &lt;&lt; m.getHp() &lt;&lt; endl; cout &lt;&lt; "\nAttacking again!\n"; } } } if ((Me.getHp() &gt; 0) &amp;&amp; (m.getHp() &lt;= 0)) cout &lt;&lt;"\nCongratulations! You killed the enemy!" &lt;&lt; endl; else if ((Me.getHp() &lt;= 0) &amp;&amp; (m.getHp() &gt; 0)) cout &lt;&lt; "You have died!" &lt;&lt; endl; cin.sync(); cin.get(); return 0; } </code></pre> <p>Here's the rest of the code in case you need it:</p> <pre><code>//Hero.h #pragma once #include "Characters.h" class Hero: public Characters { private: int Herolevel; int HeroHp; int HeroStrength; int HeroAttack; int HeroDefense; public: //Hero(); Hero(int, int, int, int); ~Hero(); }; //Hero.cpp #include "Monsters.h" #include "Hero.h" #include "Characters.h" #include &lt;iostream&gt; using namespace std; //Hero::Hero() //{ // cout &lt;&lt; "HOLA! Hero Created using normal constructor\n"; //} Hero::Hero(int newHp, int newLevel, int newAttack, int newDef) : HeroHp(newHp), Herolevel(newLevel), HeroAttack(newAttack), HeroDefense(newDef) { cout &lt;&lt; "Hero created using Overloaded function!\n"; HeroHp = newHp; cout &lt;&lt; "Hp is: "&lt;&lt; HeroHp &lt;&lt; endl; Herolevel = newLevel; cout &lt;&lt; "level is: " &lt;&lt; Herolevel &lt;&lt; endl; HeroAttack = newAttack; cout &lt;&lt; "Attack is: " &lt;&lt; HeroAttack &lt;&lt; endl; HeroDefense = newDef; cout &lt;&lt; "Defense is: " &lt;&lt; HeroDefense &lt;&lt; endl; } Hero::~Hero() { cout &lt;&lt; "Hero destroyed!\n"; } //Monsters.h #pragma once #include "Characters.h" class Monsters: public Characters //Hero { private: int Monsterlevel; int MonsterHp; int MonsterStrength; int MonsterAttack; int MonsterDefense; public: //Monsters(); Monsters(int, int, int, int); //Monsters(int); ~Monsters(); }; //Monsters.cpp #include "Monsters.h" #include "Hero.h" #include "Characters.h" #include &lt;iostream&gt; using namespace std; Monsters::Monsters(int newHp, int newLevel, int newAttack, int newDef) : MonsterHp(newHp), Monsterlevel(newLevel), MonsterAttack(newAttack), MonsterDefense(newDef) { cout &lt;&lt; "Monster created using Overloaded function!\n"; MonsterHp = newHp; cout &lt;&lt; "Hp is: "&lt;&lt; MonsterHp &lt;&lt; endl; Monsterlevel = newLevel; cout &lt;&lt; "level is: " &lt;&lt; Monsterlevel &lt;&lt; endl; MonsterAttack = newAttack; cout &lt;&lt; "Attack is: " &lt;&lt; MonsterAttack &lt;&lt; endl; MonsterDefense = newDef; cout &lt;&lt; "Defense is: " &lt;&lt; MonsterDefense &lt;&lt; endl; } Monsters::~Monsters() { cout &lt;&lt; "\nMonster Destroyed"; } //Characters.h #pragma once class Characters { private: int level; int Hp; int Strength; int Attack; int Defense; public: Characters(); Characters(int); Characters(int, int, int, int); ~Characters(); int getAttack(); int getDefense(); int getStrength(); int getHp(); int getLevel(); void setAttack(int); void setDefense(int); void setStrength(int); void setHp(int); void setlevel(int); void damageTaken(int); }; //Characters.cpp #include "Characters.h" #include "Hero.h" #include "Monsters.h" #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace std; Characters::Characters() { cout &lt;&lt; "\nCharacter has been created!\n"; } Characters::Characters(int random) { cout &lt;&lt; "Level " &lt;&lt; level &lt;&lt; " character created with: \n"; srand ((unsigned)time(0)); random = rand() % 10 + 1; //setlevel(int random); level = random; } Characters::~Characters() { cout &lt;&lt; "Character has been destroyed!\n"; } void Characters::setAttack(int att)//get Character left over hp { Attack = att; } void Characters::setDefense(int def)//get Character left over hp { Defense = def; } void Characters::setStrength(int str)//get Character left over hp { Strength = str; } void Characters::setHp(int health)//get Character left over hp { Hp = health; } void Characters::damageTaken(int damage)//get Character left over hp { Hp -= damage; } void Characters::setlevel(int lvl)//get Character left over hp { level = lvl; } int Characters::getAttack() { //cout &lt;&lt; "Your attack is: " &lt;&lt; Attack &lt;&lt; endl; return Attack; } int Characters::getDefense() { //cout &lt;&lt; "Your defense is: " &lt;&lt; Defense &lt;&lt; endl; return Defense; } int Characters::getStrength() { //cout &lt;&lt; "Your strength is: " &lt;&lt; Strength &lt;&lt; endl; return Strength; } int Characters::getHp() { //cout &lt;&lt; "Your hp is: " &lt;&lt; Hp &lt;&lt; endl; return Hp; } int Characters::getLevel() { //cout &lt;&lt; "Your level is: " &lt;&lt; level &lt;&lt; endl; return level; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload