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 :

Passer un objet à une fct


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut Passer un objet à une fct
    Hello,

    J'ai une question surement très conne....voila le code source :

    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
    30
    31
    32
    33
    34
    35
    #include <iostream>
    using namespace std;
     
    class A
    {
    	public:
    		A(){
    			cout<<"constructeur"<<endl;
    			var=0;
    		}
     
    		A(A &a){
    			cout<<"constructeur de copy"<<endl;
    			a.var = 15;
    		}
     
    		int var;
    };
     
    void fct(A a)
    {
    	cout<<a.var<<endl;
    }
     
    int main()
    {
    	A obja;
    	obja.var = 12;
     
    	fct(obja);
     
    	cout<<obja.var<<endl;
     
    	return 0;
    }
    Et le résultat :
    constructeur
    constructeur de copy
    2009118740
    15

    J'ai du mal à comprendre pourquoi il affiche "2009118740" et non "15" !
    Que se passe t-il vraiment lors de l'appel de cette fonction ?

    merci...

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    en fait, dans ton constructeur par référence, la variable que tu modifies c'est celle de la classe a, et pas de la classe que tu as entre les mains. Il faudrait faire this->var = 15 et non a.var=15.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Le constructeur de copie prend un const A&, pas un A&.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    remplace
    par ceci :
    ou comme dis plus haut , mais c'est la meme chose ici
    tu es dans la définition de la classe , pourquoi avoir mis a.var ?

Discussions similaires

  1. [Débutant] Comment passer un objet à une page ASP
    Par joce21 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2012, 15h06
  2. Passer un objet à une procédure ORACLE
    Par grosFab dans le forum Oracle
    Réponses: 4
    Dernier message: 28/08/2006, 19h58
  3. [JSP][STRUTS] Passer des objets à une classe action
    Par maphi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/08/2005, 16h55
  4. [JACOB] Comment passer un objet par référence à une méthode
    Par zlavock dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 21/03/2005, 18h28
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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