IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

[Aide] Design Pattern Composite


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 11
    Points
    11
    Par défaut [Aide] Design Pattern Composite
    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.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    tu n'as simplement pas de constructeur "par défaut" (sans arguments) dans Composite
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    En effet, merci.
    Maintenant j'ai une erreur dans mes constructeur par copie des héritiers de Objet (Pave, Cylindre, Sphere) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pave::Pave(const Pave & _pave)
        : Objet(_pave.getNom())
    {
        this->hauteur = _pave.getHauteur();
        this->largeur = _pave.getLargeur();
        this->profondeur = _pave.getProfondeur();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cylindre.cpp:12: erreur : passing 'const Cylindre' as 'this' argument of 'double Cylindre::getHauteur()' discards qualifiers
    cylindre.cpp:13: erreur : passing 'const Cylindre' as 'this' argument of 'double Cylindre::getRayon()' discards qualifiers
    merci pour l'aide.

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    à vue de nez, je dirais que les fonctions membres getHauteur(), getLargeur() et getProfondeur() n'ont pas le qualificateur 'const', qu'ils devraient avoir.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 11
    Points
    11
    Par défaut
    En effet, encore une fois.
    Merci !

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2015, 00h21
  2. Modélisation à l'aide du design pattern Observer
    Par Pierre Castelain dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 17h26
  3. Réponses: 5
    Dernier message: 24/02/2010, 16h17
  4. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo