Salut les C++,

j'ai plusieurs classes disposant de beaucoup de membres communs et d'une méthode commune: la méthode display(...).

J'ai donc fait une classe de base dont toutes les classes héritent mais le problème est que je n'arrive pas a surcharger la méthode display(...) correctement:

C'est la méthode display(...) de la classe parente qui est appeler lors de ce bout de pseudo-code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#include <vector>
 
#include "BaseClass.h"
 
#include "ClassDerived.h"
 
int main(int argc, char *argv[]) {
 
 
  std::vector<BaseClass> container ;
 
  for (int c=0 ; c < 1 ; c++) {
 
     ClassDerived instance(...) ;
 
     container.push_back(instance) ;
  }
 
  while (true) {
 
    int counter = 0 ;
 
    for (auto &instance : container) {
       instance.display() ; 
    }
 
  }
 
  return 0 ;
}
Alors comment définir la méthode display(...) dans la classe de base (BaseClass), dans le but que la méthode de la classe fille soit appeler ? A cause du conteneur.

Car j'aimerai pouvoir stocker mes objets de types différents dans un conteneur unique.

Je m'en sort pas avec tous ces mot-clefs (virtual, override, final, ...) au niveau de l'héritage.

Par ailleurs j'aimerai que mes attributs privée restent privée dans la classe héritée, sans que le compilateur s'en plaigne.

Alors quelle forme d'héritage utiliser: public, private ou protected ?

Merci pour vos lumière si vous comprenez le fond de ma question.

Merci pour vos réponses éclairées illuminant les ténèbres de ignorance.