Héritage et redéfinition de fonctions
Bonjour,
J'ai un petit souci, je n'arrive pas appeler la méthode type() de la classe dérivée pour les éléments de mon vecteur (voir la 2eme boucle for). Comment procéder?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #include <iostream>
#include <string>
#include <vector>
using namespace std;
class Pet {
public:
virtual string type() {
return "Pet";
}
};
class Bird : public Pet {
public:
string type() { return "Bird"; }
};
class Cat : public Pet {
public:
string type() { return "Cat"; }
};
int main() {
Bird b;
Cat c;
vector<Pet> v;
v.push_back(b);
v.push_back(c);
Pet * p[] = { &b, &c, };
for(int i = 0; i < sizeof p / sizeof *p; i++)
cout << p[i]->type() << endl;
for(int i = 0; i < v.size(); i++)
cout << v[i].type() << endl;
} |
En sortie, j'ai :
Et je voudrai (en passant absolument par un vecteur pour stocker mes données) :
Elbourin