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 : 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;
};
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 :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 : 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
Bonne journée. Cordialement, Gizmo.