(Beginner) C++ regarding inheritance -


i'm trying workout problem in c++ regarding inheritance , wondering how go doing correctly.

i have 3 classes set up: - enemy (which has member data: int damage, int health , int level) - wolf - bear

the way inheritance set is: wolf is-a enemy , bear is-a enemy. in other words, both wolf , bear inherit enemy.

i want set program when create new enemy so:

enemy anenemy;  

then in enemy::enemy() constructor randomly decide whether enemy wolf or bear.

how 1 approach problem? know i'd have generate random number in enemy::enemy() constructor , based on result of random number turn enemy either bear or wolf. can't wrap head around how "turn it" (the enemy) wolf or bear.

any appreciate. thanks!

you have 2 problems right :

first, polymorphism (look up) based on references or pointers, not values. therefore, when create ennemy (who might bear or wolf "at random") cannot hold variable of value type it, because type won't same.

ennemy my_ennemy = (bear or wolf); // impossible. 

essentially bear , wolf not same type, , not of same size, cannot fit inside allocated ennemy-sized amount of memory.

you need along these lines :

ennemy *my_ennemy = new bear(); // or bear someexistingbear; ennemy *my_ennemy = &someexistingbear; // or std::unique_ptr<ennemy> my_ennemy(new bear()); 

conversely, have decide whether build bear or wolf outside of ennemy constructor.

you use free function :

ennemy *make_ennemy() {      // random way choose. static seed.     if (isbear)         return new bear();     else         return new wolf(); } 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -