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 :

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();
}
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::operator=(const Scene & _scene)
{
    objetsScenes = _scene.getObjetsScenes();
    return *this;
}
objetsScenes étant le QVector<Composite>

On obtient les erreurs suivantes :
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)
Merci.