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 :

Insertion d'une structure


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Insertion d'une structure
    Bonjour , j'ai une structure monceau (priority_queue) dont les éléments sont une structure NoeudMonceau que j'ai crée comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct NoeudMonceau{
          double NMdistance;
          long idSommet;
          NoeudMonceau(double,long);
          bool operator < (const NoeudMonceau& n)const {return this->NMdistance > n.NMdistance;}
     
    };

    pour inserer la structure NoeudMonceau dans le monceau je fais comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    priority_queue<NoeudMonceau> pq1;
    pq1.push(NoeudMonceau(0.0,IDa));
    sachant que IDA et une variable que j'ai déjà calculé.
    L'erreur que j'ai eu c'est : référence indéfinie vers " NoeudMonceau::NoeudMonceau(double ,long)".
    je ne vois pas comment résoudre ça.

    En plus comme vous le remarquez , j'ai défini l'opérateur '<' inversement , pour avoir le noeud le plus petit au sommet contrairement à ce que la priority_queue donne . Je sais pas aussi si c'est juste ou pas .

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Ligne 4 de la définition de la structure, on indique qu'il existe un constructeur de la structure NoeudMonceau.
    Lors de l'insertion on utilise ce constructeur.
    Et l'erreur est : "mais où est donc ce constructeur de NoeudMonceau ?"
    Je propose de définir ce constructeur ou bien de supprimer la ligne 4.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par dalfab Voir le message

    Je propose de définir ce constructeur ou bien de supprimer la ligne 4.
    Est ce que vous pouvez SVP me montrez comment définir le constructeur avec les paramètres de ma structure , je suis débutant en c++ et je maîtrise pas encore ces méthodes?

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Tu surcharges des opérateurs et utilises des conteneurs template de la STL sans savoir comment écrire un constructeur ? Fais attention à ne pas mettre la charrue avant les bœufs ! Tu ne ne dois pas sauter les étapes dans ton apprentissage des langages informatiques. Même si c'est pas forcément marrant, il faut avoir des bases solides pour avancer. Et les constructeurs, c'est la base si tu veux faire des classes en C++.

    Pour ce qui est des constructeurs : http://cpp.developpez.com/cours/polyCpp/#LII-D

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    j'ai fais ça mais ça n'a pas marché .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct NoeudMonceau{
            double NMdistance;
            long idSommet;
            NoeudMonceau();
            bool operator < (const NoeudMonceau& n)const {return this->NMdistance > n.NMdistance;}
            };
    NoeudMonceau::NoeudMonceau()
            {
             NMdistance;
             idSommet;
     
            }

  6. #6
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Salut, c est deja excellent comme départ mais pour du C++ et un constructeur, pourquoi ne pas utiliser directement une classe?

    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
    // Dans le .hpp
    class NoeudMonceau
    {
    private: //ou protected en fonction des besoins
        double NMdistance;
        long int idSommet;
    
    public: 
        NoeudMonceau();
        NoeudMonceau(double d, long int li);
        bool operator < (const NoeudMonceau& n)const {return this->NMdistance > n.NMdistance;}
    };
    
    // Dans le .cpp
    // Constructeur par défaut
    NoeudMonceau::NoeudMonceau()
    {
        NMdistance = /* Valeur par défaut*/;
        idSommet = /* Valeur par défaut*/;
    }
    
    // Constructeur surchargé
    NoeudMonceau::NoeudMonceau(double d, long int li) : NMdistance(d), idSommet(li)
    {
    }

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Bysbobo Voir le message
    Salut, c est deja excellent comme départ mais pour du C++ et un constructeur, pourquoi ne pas utiliser directement une classe?
    Salut , oui c'est une très bonne idée ... je vais essayer ça .

Discussions similaires

  1. insertion d'une liste definie dans une structure
    Par Invité dans le forum SL & STL
    Réponses: 2
    Dernier message: 18/04/2013, 09h45
  2. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  3. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01
  4. [toFAQ][socket] Envoi d'une structure
    Par julien20vt dans le forum C++
    Réponses: 15
    Dernier message: 23/04/2003, 15h47
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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