Bonjour,
Je travail sur un projet étudiant et je dois réaliser un programme où l'on dessines des formes 2D (sur 3 "fenêtres", une par dimension) qui sont rendus en 3D (dans une 4e fenêtre) via une bibliothèque.
Je vous met mon Diagramme de Classes :
je me heurte à un problème d'héritage pour le design pattern composite (Scene et Objet héritent de Composite) et à l'utilisation des QVector, l'erreur est liée au fait que la classe héritée Scene contient un QVector<Composite> (Composite n’étant jamais instanciée) et que lors de la construction par copie de Scene on copie le QVector de cette façon :
on a pourtant bien surchargé l’opérateur = de Scene :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Scene::Scene(const Scene & _scene) : Composite(_scene.getNom()) { objetsScenes=_scene.getObjetsScenes(); }
objetsScenes étant le QVector<Composite>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Scene& Scene::operator=(const Scene & _scene) { objetsScenes = _scene.getObjetsScenes(); return *this; }
On obtient les erreurs suivantes :
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 scene.cpp:14: instantiated from here "objetsScenes=_scene.getObjetsScenes();" qvector.h:509: erreur : no matching function for call to 'Composite::Composite()' composite.h:9: candidates are: Composite::Composite(const Composite&) composite.h:8: Composite::Composite(QString)
Partager