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 :

uninitialized reference member


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut uninitialized reference member
    Bonjour , j'ai qq problèmes à appliquer certaines notions vu au cours ,
    imaginons une classe A et B . B doit avoir une variable membre qui fait référence à la classe A.

    a.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class B;
     
    class A
    {
       //...
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "a.h"
    class B
    {
    	//...
    	private:
    		A&		refA;
     
    };
    J'obtiens cette erreur à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uninitialized reference member ‘B::refA’
    Je sais qu'une référence ne peut être initialisée à NULL , contrairement à un pointeur mais il est stipulé dans l'exercice que l'on doit utiliser les références.

    ma question est donc la suivante : Comment initialiser ?

    Merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    B::B(A& obj):refA(obj)
    {
     
    }
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    Merci de votre réponse ,

    je rajoute donc le constructeur suivant dans la classe B: (b.h)

    avec la ligne que vous m'avez donnée dans le b.cpp pour initialiser , et j'obtiens toujours la même erreur . J'ai loupé quoi ?

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Tu as bien l'initialisation de la référence dans la liste d'initialisation du constructeur ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    Voici mes 3 fichiers , ce sera plus clair :

    a.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class B;
     
    class A
    {
    //...
    };
    b.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "b.h"
     
    B::B(A& obj):refA(obj)
    {
     
    }
    b.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "a.h"
     
    class B
    {
     //...
    private:
            A& refA;
    };

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Euh la pour moi le code est bon.
    Je ne vois pas pourquoi il te sort ça.

    Donne donc le code complet de ta classe B ou tout du moins ses constructeurs.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

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

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Réponses: 3
    Dernier message: 11/06/2012, 09h36
  3. Réponses: 8
    Dernier message: 16/01/2007, 11h16
  4. Réponses: 4
    Dernier message: 30/05/2006, 19h39
  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