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 :

Pb avec les références


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut Pb avec les références
    Bonjour,

    Je bute un peu sur les références, voici un cas que je n'arrive pas
    à comprendre :
    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
     
    void manipString(string &str)
    {  
     //......
    }
     
     
    string stringReturn()
    {
       string str = "Hello world !";
       return str;
    }
     
     
    int main()
    {
     
      manipString(stringReturn());
     
    }
    Le compilo me dit :
    error:invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::string'

    error:in passing argument 1 of `void manipString(std::string&)
    En clair, est il possible de passer a une fonction qui prend en paramètre
    une référence sur string, une fonction qui retourne une string ?

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    En clair, est il possible de passer a une fonction qui prend en paramètre
    une référence sur string, une fonction qui retourne une string ?
    Pas seulement, tout temporaire non nommé en général. Par contre tu peux passer un temporaire en tant que référence constante.

  3. #3
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Pas seulement, tout temporaire non nommé en général. Par contre tu peux passer un temporaire en tant que référence constante.
    heuuu... j'ai pas tout compris là.
    Qu'appel-t-on un temporaire exactement ?
    Quelle modification faudrait-il faire à mon code (un ex svp) ?

  4. #4
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Dans ton code, il faudrait que ta fonction manipString prenne une référence constante, pas une simple référence.

    C'est la condition pour pouvoir l'utiliser par référence, sinon ça voudrait dire que tu pourrais potentiellement modifier une variable temporaire, ce qui n'a souvent pas de sens.

    Exemple : manipString("bonjour"); // Ne fonctionne pas

  5. #5
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut
    Ah ok, je crois que je commence à comprendre
    Cad que pour que mon code fonctionne tel quel, il faut
    passer à manipString une "vrai" variable string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string str = "Bonjour !";
    manipString(str);
    c'est ça ?

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    L'alternative est que manipString prenne un string const&.

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

Discussions similaires

  1. pdflatex, xfig et soucis avec les références aux figures
    Par DUDE007 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 11/10/2011, 18h29
  2. problemes avec les références
    Par saeba357 dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2009, 14h52
  3. [Toutes versions] Problème avec les bibliothèques de référence Outlook
    Par Thierry'' dans le forum Access
    Réponses: 3
    Dernier message: 07/05/2009, 13h14
  4. Confusion avec les références
    Par vdumont dans le forum C++
    Réponses: 20
    Dernier message: 03/05/2006, 16h56
  5. Pb avec les références d'une base de données
    Par Celia1303 dans le forum Access
    Réponses: 8
    Dernier message: 01/12/2005, 15h44

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