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 :

Forward d�claration et r�f�rences ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2007
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activit� : Chef de projet MOA
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par d�faut Forward d�claration et r�f�rences ?
    Bonjour � toutes et tous,

    je me permets d'ouvrir ce fil de discussion suite � une discussion avec un coll�gue. J'ai toujours eu pour habitude d'utiliser un class XXX plutot qu'un #include "XXX.h" lorsque je n'utilise que des pointeurs dans le fichier header en question, et j'ai �t� un peu surpris de voir que le compilateur acceptait cela aussi pour les r�f�rences... D'o� deux questions :
    - est-ce vraiment l�gal d'utiliser une "forward declaration" lorsque l'on utilise des r�f�rences dans un header ?
    - comment est stock� une r�f�rence, qu'est ce vraiment ? Je pensais que c'est plus qu'un "pointeur modifi�", et qu'il y avait une certaine connaissance de l'objet en interne, mais si un include n'est pas n�cessaire, il semblerait que non ??

    Merci d'avance pour vos r�ponses

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    - est-ce vraiment l�gal d'utiliser une "forward declaration" lorsque l'on utilise des r�f�rences dans un header ?
    OUI!
    Une pointeur ou une r�f�rence, c'est juste une "r�f�rence" donc on a besoin que du type de d�claration pour les utiliser.

    - comment est stock� une r�f�rence, qu'est ce vraiment ? Je pensais que c'est plus qu'un "pointeur modifi�", et qu'il y avait une certaine connaissance de l'objet en interne, mais si un include n'est pas n�cessaire, il semblerait que non ??
    En fait, il faut toujours penser une r�f�rence comme si c'�tait un "surnom" d'un objet.
    En revanche il faut bien qu'il soit impl�ment� d'une fa�on ou d'une autre, et visiblement c'est toujours sous la forme d'un pointeur avec des r�gles sp�ciales qu'il est impl�ment�. Cela dit, je pr�f�re ne pas m'occuper de la fa�on dont il est impl�ment� parceque penser que c'est un pointeur a tendance a donner de mauvaises id�es de manipulations.

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Dans certains cas bizarro�des, une r�f�rence est vraiment un alias avec des propri�t�s suppl�mentaires. Cela se passe notamment quand une r�f�rence est d�clar�e � l'int�rieur du corps d'une fonction.

    Mais en param�tre de fonction ou en variable membre d'une classe, c'est un pointeur d�guis�. Et de ce c�t�-ci, pointeur ou r�f�rence, m�me combat: La forward declaration suffit tant qu'on n'a besoin ni de la taille de l'objet point�, ni de son contenu.

    Ainsi, on peut faire les choses dans cet ordre:
    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
    //Forward declaration
    class A;
     
    //Déclaration d'une fonction qui utilise une référence
    void f(A&);
     
    //Vraie définition
    class A
    {
    public:
    	void m();
    };
     
    //Ici, on utilise le contenu
    void f(A& ref)
    {
    	A.m();
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut

    Citation Envoy� par M�dinoc Voir le message
    Mais en param�tre de fonction ou en variable membre d'une classe, c'est un pointeur d�guis�
    En effet, la notion de r�f�rence n'existe qu'au niveau de C++. Au niveau compilation, c'est un b�te pointeur (dans ce cas).

Discussions similaires

  1. [Toutes versions] D�claration des r�f�rences
    Par ClaudeLELOUP dans le forum VBA Access
    R�ponses: 40
    Dernier message: 24/11/2010, 06h10
  2. Classe generics et forward d�claration
    Par stanislas dans le forum Langage
    R�ponses: 5
    Dernier message: 02/04/2010, 10h52
  3. Probl�me de d�claration avec r�f�rences crois�es
    Par lpierard dans le forum D�buter
    R�ponses: 2
    Dernier message: 20/11/2009, 15h10
  4. d�claration de r�f�rences
    Par babybell dans le forum Macros et VBA Excel
    R�ponses: 5
    Dernier message: 20/03/2009, 06h33
  5. forward d�claration de strcuture
    Par BigNic dans le forum C++
    R�ponses: 10
    Dernier message: 14/04/2006, 14h07

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