question heritage et appel de fonctions membres

question heritage et appel de fonctions membres - C++ - Programmation

Marsh Posté le 25-05-2004 à 21:25:28    

voila, je bloque sur un truc qui a mon avis est simple
 

Code :
  1. struct FooBase
  2. {
  3.     virtual void bar()
  4.     {
  5.         std::cout << "appel de FooBase::bar\n";
  6.     }
  7. };
  8. struct FooDerived1 : public FooBase
  9. {
  10.     void bar()
  11.     {
  12.         std::cout << "appel de FooDerived1::bar\n";
  13.     }
  14. };
  15. struct FooDerived2 : public FooBase
  16. {
  17.     void bar()
  18.     {
  19.         std::cout << "appel de FooDerived2::bar\n";
  20.     }
  21. };
  22. int main()
  23. {
  24.     std::vector<FooBase> v;
  25.     FooDerived1 f1;
  26.     v.push_back(f1);
  27.     FooDerived2 f2;
  28.     v.push_back(f2);
  29.     ...
  30.     for(std::vector<FooBase>::size_type i=0;i<v.size();i++)
  31.     {
  32.         // comment faire pour appeler FooDerived1::bar si f1,
  33.         // FooDerived2::bar si f2... ?
  34.     }
  35. }


 
en esperant c'est pas trop con  :??:


Message édité par cris56 le 25-05-2004 à 21:27:17
Reply

Marsh Posté le 25-05-2004 à 21:25:28   

Reply

Marsh Posté le 25-05-2004 à 22:21:43    

bah il doit falloir ne pas implementer bar dans la classe mere deja ...

Reply

Marsh Posté le 25-05-2004 à 22:27:26    

non. seulement comme tu travailles par valeur et que tes Derived sont des FooBase, tu as un vector de FooBase et rien d'autres

Reply

Marsh Posté le 25-05-2004 à 22:37:14    

comment il faudrait faire alors ? tu ferais comment toi pour decrire ce genre de probleme ?

Reply

Marsh Posté le 25-05-2004 à 22:45:30    

avec des pointeurs ou des références, c'est la seule façon de faire du polymorphisme en C++. et n'oublie pas les ~ virtuels

Reply

Marsh Posté le 25-05-2004 à 22:48:36    

ok merci, je vais aller voir ca

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed