Précisions sur le mot clé virtual protected
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 :
Code:
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;
}; |
Ici je l'intéresserai à la fonction mousedoubleclick() qui est virtual protected (peu importe les paramètres ici).
Un peu plus loin dans le code je fais ceci à l'intérieur d'une fonction membre privée de ma classe MainWindow :
Code:
vw.mousedoubleclick()
Et là le compilateur bloque et dit que la fonction mousedoubleclick() est protected.
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 :
Code:
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 |
Bonne journée. Cordialement, Gizmo.