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

 C++ Discussion :

Constructeur et objet


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 70
    Par défaut Constructeur et objet
    Bonjour,

    je fais une classe segment et je voudrais mettre deux points dedans
    (pour créer un segment). Le problème est que je souhaite faire un
    constructeur qui ressemble à ça(code du bas)
    Comme ça dans mon main je fais juste ce qu'il y'a dans le 1er code (je crée deux points que je mets dans le segment)
    Et ce que j'ai fais ne marche pas, j'ai certains doute sur le constructeur de segment
    mais je vois pas comment faire autrement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Point monP1(1,1);
        Point monP2(2,2);
        Segment monSeg(monP1,monP2);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #ifndef DEF_POINT
    #define DEF_POINT
     
    #include<string>
    #include "Forme.h"
    #include "Point.h"
     
    using namespace std;
     
    class Segment
    {
    public:
     
        Segment(Point m_p1,Point m_p2):
        {
        p1=m_p1;
        p2=m_p2;
        }
     
     
    private:
        Point p1;
        Point p2;
        long longueurSegment;
     
    };
     
    #endif

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Et ce que j'ai fais ne marche pas
    Plus de précisions

    Sinon, il y a 2 détails:
    • Tes 2 points sont passés par copie et non par référence. Tu utilises le C++11?
    • Est-ce que tu as surchargé dans ta classe Point l'opérateur d'affectation Point& Point::operator=(const Point& other);?


    Ou alors passe par la liste d'initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Segment(const Point& m_p1, const Point& m_p2): p1(m_p1), p2(m_p2) {}

  3. #3
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par foetus Voir le message
    Est-ce que tu as surchargé dans ta classe Point l'opérateur d'affectation Point& Point::operator=(const Point& other);?
    Normalement pour une classe Point (aucun pointeur en donnée membre), le compilateur génère le constructeur par copie et l'opérateur d'affectation lui-même et ils font la bonne chose.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 70
    Par défaut
    je ne sais pas si j'utilise le c++11 et je n'ai pas surchargé point.

    Pour plus de précision mon problème est que j'ai comme message d'erreur

    error 'segment' was not declared in this scope
    error expected ';' before 'monSeg'

    erreur absolument incompréhensible vu que dans le main j'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <iostream>
    #include<string>
     
    #include "Forme.h"
    #include "Cercle.h"
    #include "Rectangle.h"
    #include "Point.h"
    #include "Segment.h"
     
    using namespace std;
     
    int main()
    {
     
        Point monP1(1,1);
        Point monP2(2,2);
        Segment monSeg(monP1,monP2);
     
        return 0;
    }

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Dans Segment.h, remplace DEF_POINT dans les #ifndef et #define en début de fichier par DEF_SEGMENT.

    Edit: je vais quand même expliquer un minimum :
    Dans ton main.cpp tu inclus Point.h et Segment.h, or dans Point.h tu fais un include guard (#ifndef et #define au début) avec la macro DEF_POINT. Lorsque le prépocesseur passe ensuite à Segment.h, comme ta macro est déjà définie, le contenu du fichier est ignoré. Conséquence, ta classe Segment n'est pas définie, il ne sait pas ce que c'est, et te dit qu'il s'attendait à un point-virgule.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 70
    Par défaut
    ah oui mince, j'avais pas fait attention à ça ...

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Classe, Constructeur et objet, une question toute bête
    Par OurPleasure dans le forum C#
    Réponses: 14
    Dernier message: 14/01/2015, 15h11
  2. Constructeur et objet
    Par odysseeh dans le forum Débuter
    Réponses: 7
    Dernier message: 27/04/2013, 11h43
  3. Réponses: 3
    Dernier message: 23/01/2012, 17h34
  4. Constructeur d'objet null
    Par tchoimars dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/02/2009, 17h47
  5. algorithme constructeur en objet
    Par sicilianadev dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 31/10/2008, 15h10

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