Comment surcharger une fonction avec comme différence de signature objet de base & dérivées ?
Salut les codeurs,
Voila j'aimerai faire une surcharge de fonction qui affichera le contenu voulu selon l'argument, ici des objets de base et ses dérivées :
par exemple :
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
|
class Base
{
//...
};
class Banana : public base
{
//...
};
class Apple : public base
{
//...
};
class Render
{
//...
void draw (Base * base){/*...display base...*/}
void draw (Banana * banana){/*...display banana...*/}
void draw (Apple * apple){/*...display apple...*/}
};
vector<Base*> fruits;
Render myRender;
fruits.emplace_back(new Banana());
fruits.emplace_back(new Apple());
fruits.emplace_back(new Banana());
for (unsigned int i(0); i<fruits.size(); ++i)
{
myRender.draw(fruits[i]);
}
//... affiche :<br> // base base base |
Le soucis c'est qu'il finit par afficher que l'objet de base ! :(
Peut-être un défaut de conception, mais je voudrais séparer les Renderer et les Objets.
Avez vous un solution élégante pour résoudre ce problème ?