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 :

Syntaxe : initialiser une variable membre r�f�rence


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut Syntaxe : initialiser une variable membre r�f�rence
    Bonjour

    J'ai une variable membre d�clar�e comme suit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    LightClass &mLightFunction;
    Le constructeur de LightClass prend un objet de type Parameters :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    LightClass::LightClass(Parameters params)
    Je voudrais initialiser mLightFunction dans le constructeur de la classe qui contient ce membre. Ce constructeur re�oit une r�f�rence vers un objet Parameters.

    Quelle est donc la syntaxe pour initialiser ce membre dans la liste d'initialisation du constructeur ?

    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
    J'ai pas tr�s bien compris ce que tu voulais affecter � quoi, mais la syntaxe dans la liste d'initialisation est la m�me que pour n'importe quel autre type :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    class C
    {
    public :
     
        C(X& x) : x_(x) {}
     
        X& x_;
    };

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Soit ton morceau de code modifi� comme suit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    class C
    {
    public :
     
        C(X& x) : ???? {}
     
        Y& y_;
    };
    x est un objet � donner au constructeur de la classe Y, afin d'obtenir un objet Y, qui sera la "valeur" d'initialisation de y_.

    Que mettre � le place des points d'interrogation ?

    Merci.

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Si ta classe Y est du genre de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    class Y
    {
        public:
            Y(X& x):x_(x){}
            X x_;
    };
    alors, ta classe C sera, tout simplement sous la forme de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class C
    {
        C(X& x):y_(x){}
    /* OU -OU - OU - OU */
        C(Y& y):y_(y){}
        Y &y_;
    };
    La premi�re ligne utilisera le constructeur prenant un X en parametre de ta classe Y, la seconde utilisera le constructeur par copie

    [EDIT]virtules remplac�e par deux points
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Hello,

    Je suppose qu'avant tes _y, tu voulais mettre un : ?

    Apparemment, la premi�re solution ne fonctionne pas. Le compilateur ne comprend aps �a comme un argument de constructeur, mais simplement comme une valeur d'initialisation.

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Bon, pour �tre un peu plus clair, voici mon code, expurg�.
    A la place des points d'interrogation, ce que je cherche � coder.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class AmLight
    {
        AmLight(MDagPath &dp) : ????
        ...
        MFnNonAmbientLight &mLightFunction;
    }
    
    class MFnNonAmbientLight
    {
        MFnNonAmbientLight(MDagPath &dp);
        ....
    }

  7. #7
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Citation Envoy� par oodini
    Hello,

    Je suppose qu'avant tes _y, tu voulais mettre un : ?

    Apparemment, la premi�re solution ne fonctionne pas. Le compilateur ne comprend aps �a comme un argument de constructeur, mais simplement comme une valeur d'initialisation.
    Oui, de fait... la virgule et les deux points sont forts rapproch�, sur mon clavier... et j'ai �t� un peu distrait
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

Discussions similaires

  1. R�ponses: 4
    Dernier message: 19/04/2006, 16h03
  2. comment r�cup�rer une variable membre?
    Par marute dans le forum MFC
    R�ponses: 4
    Dernier message: 13/04/2006, 16h11
  3. R�ponses: 6
    Dernier message: 04/04/2006, 13h12
  4. [VB6]Initialiser une variable Static dans un �venement
    Par loverdose dans le forum VB 6 et ant�rieur
    R�ponses: 16
    Dernier message: 20/01/2005, 14h57
  5. R�ponses: 9
    Dernier message: 29/06/2004, 08h40

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