Bonjour,
J'aimerais quelques précisions sur comment fonctionne le mot clé virtual protected.
En fait j'ai l'impression de confondre membre d'une classe et objet instancié par la classe.
A travers mon exemple j'essaierai de vous expliquer ce que j'ai compris intuitivement.
Alors voilà : d'abord il y a ma classe MainWindow :Ici je l'intéresserai à la fonction mousedoubleclick() qui est virtual protected (peu importe les paramètres ici).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Phonon::VideoWidget vw; };
Un peu plus loin dans le code je fais ceci à l'intérieur d'une fonction membre privée de ma classe MainWindow :Et là le compilateur bloque et dit que la fonction mousedoubleclick() est protected.
Code : Sélectionner tout - Visualiser dans une fenêtre à part vw.mousedoubleclick()
Voilà maintenant ce que j'ai compris (mais je ne suis vraiment pas sûr du tout) :
=> un objet instancié de type Phonon::VideoWidget n'est pas membre de cette classe ? Il contiendra les membres (fonctions, variable) mais n'en n'est pas un ?
=> vw est de type VideoWidget et membre privé de MainWindow : est-ce parce que vw est privé que le compilo bloque ?
=> virtual protected signifie que la fonction est utilisable par les membres de la classe mais peut l'être aussi par les membres des classes dérivées ?
Je ne suis pas sûr du tout de ça. Si vous pouvez m'éclairer sur ces 3 points je vous remercie je sens que c'est un concept très important.
En fait dans le code voilà ce que j'ai compris :
Bonne journée. Cordialement, Gizmo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Phonon::VideoWidget vw; // dans la classe MainWindow je crée un objet de type VideoWidget (cet objet est membre de la classe MainWindow) (...) vw.mousedoubleclick(); // à l'intérieur d'un membre de MainWindow j'appelle une fonction virtual protected appartenant à une classe extérieure à MainWindow
Partager