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++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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 : 35
    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. 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