[c++ POO] multiple definition of 'vid'
djgiz
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'utilise Qt c++ pour faire un projet.
J'aimerais savoir si avec Qt on peut déclarer un objet "tout seul" c'est à dire en dehors de la classe du widget principal ?
Comme ceci dans le MainWindow.h:
N-B : ici je place la déclaration de vid juste avant le #endif
Quand je fais ceci le compilateur bloque et indique " multiple definition of 'vid' ".
Je ne vois pas comment il peut déjà être défini alors qu'il est construit en-dehors de la classe.
Ma question ici : est-ce que déclarer un objet "isolé", c.à.d non-membre d'une classe est permis ?
J'utilise Qt c++ pour faire un projet.
J'aimerais savoir si avec Qt on peut déclarer un objet "tout seul" c'est à dire en dehors de la classe du widget principal ?
Comme ceci dans le MainWindow.h:
class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; Phonon::VideoWidget vid;
N-B : ici je place la déclaration de vid juste avant le #endif
Quand je fais ceci le compilateur bloque et indique " multiple definition of 'vid' ".
Je ne vois pas comment il peut déjà être défini alors qu'il est construit en-dehors de la classe.
Ma question ici : est-ce que déclarer un objet "isolé", c.à.d non-membre d'une classe est permis ?
A voir également:
- [c++ POO] multiple definition of 'vid'
- Vid - Télécharger - TV & Vidéo
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
- Copier coller multiple - Guide
- Path of exile 2 - Guide
9 réponses
Salut,
Je n'ai pas de raison spéciale : j'aurais juste aimé savoir si c'est possible.
Après dans des membres de MainWindow je l'utilise :
C'est peut-être pour ça que ça bloque ?
Peux-tu me dire pourquoi c'est crade ?
J'aimerais savoir car c'est marqué dans aucun tuto... Merci d'avance bonne journée à toi.
Cordialement, Gizmo.
Je n'ai pas de raison spéciale : j'aurais juste aimé savoir si c'est possible.
Après dans des membres de MainWindow je l'utilise :
vw.setwindowflags();
C'est peut-être pour ça que ça bloque ?
Peux-tu me dire pourquoi c'est crade ?
J'aimerais savoir car c'est marqué dans aucun tuto... Merci d'avance bonne journée à toi.
Cordialement, Gizmo.
Déjà c'est vraiment inutile d'essayer de te servir de vw à l'intérieur de ta classe, alors que tu le déclare en dehors...
Ca pose un problème de sécurité, me semble-t-il, car si t'ajoute d'autres sources, ils peuvent ce servir de cette variable.
Là ton objet est un widget en plus, essayer de s'en servir comme tu le fait signifie que t'as pas vraiment capté la poo.
Ca pose un problème de sécurité, me semble-t-il, car si t'ajoute d'autres sources, ils peuvent ce servir de cette variable.
Là ton objet est un widget en plus, essayer de s'en servir comme tu le fait signifie que t'as pas vraiment capté la poo.
non non au contraire je pense (du moins j'espère avoir compris)
juste seulement savoir si le fait que mon compilateur bloque vient de ceci : j'ai déclaré le vid en dehors de la MainWindow ? Est-ce possible d'y accéder depuis un membre de ma classe MainWindow ? Si oui comment ?
Je sais parfaitement que c'est une aberration mais est-ce possible quand même dans l'absolu ?
En te remerciant. Cordialement, DJGiz.
juste seulement savoir si le fait que mon compilateur bloque vient de ceci : j'ai déclaré le vid en dehors de la MainWindow ? Est-ce possible d'y accéder depuis un membre de ma classe MainWindow ? Si oui comment ?
Je sais parfaitement que c'est une aberration mais est-ce possible quand même dans l'absolu ?
En te remerciant. Cordialement, DJGiz.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
C'est bien ce qui me semblait c'est pas possible d'accéder à une variable complètement isolée non-membre d'une classe ?...
C'est bien ce qui me semblait c'est pas possible d'accéder à une variable complètement isolée non-membre d'une classe ?...
Bonjour,
Je posais juste la question comme ça je vais un lecteur vidéo.
J'aurais aimé savoir au sujet des fonctions virtual protected : la seule manière de les utiliser est de sous-classer et de les redéfinir à l'intérieur ?
Merci d'avance pour la réponse.
Cordialement, Gizmo.
Je posais juste la question comme ça je vais un lecteur vidéo.
J'aurais aimé savoir au sujet des fonctions virtual protected : la seule manière de les utiliser est de sous-classer et de les redéfinir à l'intérieur ?
Merci d'avance pour la réponse.
Cordialement, Gizmo.
Bonjour,
Merci pour la réponse au sujet du virtual.
En ce qui concerne mon vw à déclarer en "isolé" en dehors de ma classe MainWindow : je sais que ça ne se fait pas : j'aurais aimé savoir pourquoi il me met : error : multiple definition of 'vid' ?
Je vous souhaite une bonne journée à toutes et à tous.
Cordialement, djgiz.
Merci pour la réponse au sujet du virtual.
En ce qui concerne mon vw à déclarer en "isolé" en dehors de ma classe MainWindow : je sais que ça ne se fait pas : j'aurais aimé savoir pourquoi il me met : error : multiple definition of 'vid' ?
Je vous souhaite une bonne journée à toutes et à tous.
Cordialement, djgiz.
Bon, ça s'enlise. J'apporte la bonne réponse.
La ligne
Phonon::VideoWidget vid;
n'est pas une déclaration mais une définition et il ne peut y avoir qu'une seule définition pour l'ensemble du programme. Or tu mets ta définition dans un .h qui (d'après l'erreur) est inclus dans plusieurs fichiers source, d'où conflit.
dans ton .h remplace la ligne par :
extern Phonon::VideoWidget vid;
et met la définition dans un fichier source (.cpp).
Quant à la propreté, vu le peu que tu donnes, je n'ai pas d'avis.
La ligne
Phonon::VideoWidget vid;
n'est pas une déclaration mais une définition et il ne peut y avoir qu'une seule définition pour l'ensemble du programme. Or tu mets ta définition dans un .h qui (d'après l'erreur) est inclus dans plusieurs fichiers source, d'où conflit.
dans ton .h remplace la ligne par :
extern Phonon::VideoWidget vid;
et met la définition dans un fichier source (.cpp).
Quant à la propreté, vu le peu que tu donnes, je n'ai pas d'avis.