Bonjour à tous,
J'aimerai juste un éclaircissement sur un point:
Quand on défini une classe abstraite, la classe possède alors au moins une méthode virtuelle pure.
S'il arrive que la classe représente purement et simplement une abstraction de donnée, alors il se peut qu'elle ne possède que des méthodes virtuelles pures...
Exemple pour moi d'une caméra, qui peut être une caméra infrarouge, visible, etc...
J'introduis donc une classe mère abstraite Camera.
Cette façon de faire permettrait aux classe dérivées de tranquillement redéfinir les deux méthodes virtuelles pures privées, et donc:
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 class Camera { public: Camera(); virtual void getImage(int numero_image) = 0; protected: virtual void initialisation() = 0; virtual void prepareCapture() = 0; }; Camera::Camera() { initialisation(); prepareCapture(); }
suffirait amplement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Camera_Visible::Camera_Visible() :Camera() { std::cout << "Pas besoin de plus !!" << std::endl; }
Je sais pas vraiment pourquoi ce n'est pas possible, mais c'est bien dommage car ce serait pratique.
Y a t-il une autre méthode à part définir des fonctions virtuelles à la place de fonctions virtuelles pures???
Merci !
Partager