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 :

Passage de paramètre par référence + const


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut Passage de paramètre par référence + const
    Bonjour,


    Je dois faire une fonction permettant d'ajouter un élément dans une liste, mais avec certaines contraintes. La contrainte : la fonction déclaré ainsi ne doit pas changer, je dois plutôt adapter mon code à l'intérieur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void ajouteCube(const std::string &nomCube){
      NoeudCube *cube; //NoeudCube est une classe public dans la classe Cube.
      std::string nomC = nomCube; //nomCube fait partie des attribues d'un noeudCube. Dans ce cas, il est passé en paramètre par référence.
     
      Cube(nomC);//Erreur ici !
    //Le constructeur de Cube permet un paramètre indiquant le nom du cude. 
    }
    Je reçois ce message d'erreur : error C2371: 'nomC' : redefinition; different basic types. - see declaration of nomC.

    Est-ce que quelqu'un voit mon Problème?

    Selon moi, c'est possiblement à cause des manipulations par référence ou du mot const qu'il y a une certaine restriction qui s'appliquerait et que je comprend pas à 100%..

    merci !

    [edited] std::string

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code douteux : Sélectionner tout - Visualiser dans une fenêtre à part
      std::nomC = nomCube;
    Ne manquerait-il pas un mot, là?
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
      std::string nomC = nomCube;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    Oups...

    Oui, je std::string était bien là, erreur de transcription
    Mais ce n'est pas ce qui cause le problème ;-)

    merci !

  4. #4
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Bonjour,
    Code douteux : Sélectionner tout - Visualiser dans une fenêtre à part
    Cube(nomC);//Erreur ici !
    A cette ligne, tu crées un objet Cube temporaire (il n'a d'ailleurs pas de nom). Étant temporaire, il disparait dès la fin de l'expression, c'est à dire juste après le point virgule... Quel est l'intérêt ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 29
    Par défaut
    Salut Arzar,

    Ton commentaire m'a fait réfléchir. En fait, je procédais à la création d'un élément sans new. Il manquait clairement quelque chose!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void ajouteCube(const std::string &nomCube){
    NoeudCube *cube; //NoeudCube est une classe public dans la classe Cube.
    Cube *unCube; 
    std::string nomC = nomCube;
     
    unCube = new Cube(nomC); 
    }
    Et voilà, maintenant, ça compile sans erreur :-D

    Merci Arzar pour ton coup de main

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/08/2007, 17h34
  2. Passage de paramètres par référence
    Par margagn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 08/05/2007, 23h08
  3. [POO] Passage de paramètre par référence.
    Par abidi_niz dans le forum Langage
    Réponses: 3
    Dernier message: 12/10/2006, 12h20
  4. [C#] passage de paramètres par référence
    Par SesechXP dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2006, 12h48
  5. [EJB] Passage des paramètres par référence
    Par salome dans le forum Java EE
    Réponses: 2
    Dernier message: 05/07/2005, 11h25

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