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 de strcuture


Sujet :

C++

  1. #1
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut forward d�claration de strcuture
    Salut,
    voici mon pb:
    Dans un header une de mes fonctions re�oit un pointeur sur une structure. Or j'aimerai ne pas inclure le header o� est d�finie la structure (Pb de ref�rence crois�es). Je sais qu'avec des classes on peu utiliser une "forward" d�claration. Mais pour les structures est-ce possible ? si oui quel est la syntaxe (j'en ai essay� quelques unes mais �a ne compile pas)?

  2. #2
    Membre chevronn�
    Avatar de bigquick
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 356
    Par d�faut
    En C++, classes et structures sont �quivalents, � quelques diff�rences pr�s (Class et struct dans la FAQ). Mais pour les forward declaration :
    devrait fonctionner tout aussi bien que

  3. #3
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    ben c'est le premiers truc que j'ai essay� et le compilo � l'impression que c'est une double d�finition

  4. #4
    Membre chevronn�
    Avatar de bigquick
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 356
    Par d�faut
    Est-ce que tu peux poster un code minimal (enfin le plus possible) qui reproduit cette erreur ?
    (ps: j'imagine que tu as bien des include guards sur tous tes en-t�tes ?)

  5. #5
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    struct.hxx
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #ifndef __STRUCT__
    #define __STRUCT__
     
    #include "struct_user.hxx"
     
    typdef struct 
    {
    int foo;
    char bar;
     
    }myStruct;
     
    #endif
    struct_user.hxx
    #ifndef __STRUCT_USER__
    #define __STRUCT_USER__

    struct myStruct;

    class StructUser
    {
    public :
    void printStruct(myStruct *)
    };
    #endif
    struct_user.cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "struct.hxx"
    #include "struct_user.hxx"
    #include <iostream>
     
    using namespace std;
     
    void StructUser::printStruct(myStruct * _s)
    {
    	cout << "foo:" << _s->foo << "bar"<< _s->bar << endl;
    }
    [edit] merci pour ton aide. L� c'est la version qui ne compile pas.

  6. #6
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Bon, d�j�, en C++ typedef n'existe plus, donc c'est struct myStruct {};
    Ensuite, le code fourni ne compile pas non plus, il manque des ";"

  7. #7
    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
    Une d�claration anticip�e sur un typedef, je ne pense pas que �a fonctionne. De toute fa�on comme te l'a dit Miles tu n'as pas besoin de ce typedef en C++, ce qui r�soud le probl�me.

  8. #8
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    C'est quoi le message d'erreur du compilateur ?

  9. #9
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    merci de vos r�ponses mais si j'enl�ve mon typedef le message d'erreur MSVC++ 6 est:

    struct_user.cpp(8) : error C2065: '_s' : undeclared identifier

    en le laissant avec MSVC++ 6 et forte6 U2:

    'myStruct' : redefinition; different basic types

    je comprend bien que si mon compilo ne respecte pas la norme je devrait en changer. Mais ce probl�me se posant dans le cadre de mon travail je n'ai pas le choix. Mon code doit �tre compatible avec MSVC6 en windows, forte 6 U2 en solaris, Gcc en Linux.
    Donc si quelqu'un voit une astuce pour passer outre.

    Citation Envoy� par miles
    Bon, d�j�, en C++ typedef n'existe plus, donc c'est struct myStruct {};
    Ensuite, le code fourni ne compile pas non plus, il manque des ";"
    il en manques juste un non ? Et mon probl�me est que je n'arrive pas � le voir vue que le sujet du post m'arr�te avant.

  10. #10
    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
    Tu l'enl�ves comment le typedef ?

    Si tu fais ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct
    {
    int foo;
    char bar;
     
    }myStruct;
    Alors tu vas d�clarer une instance myStruct d'une structure non nomm�e.

    Il faut faire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct myStruct
    {
    int foo;
    char bar;
     
    };

  11. #11
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    mreci � tous effectivement sans le typedef et correctement �crit �a va mieux.
    Sans chercher d'excuses, je vient du C et la non utilit� du typedef en C++ m'avait compl�tement �chapp�.
    Encore merci � tout ceux qui m'ont consacr� un peu de temps.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Forward d�clarations et namespaces
    Par nicolo011 dans le forum C++
    R�ponses: 2
    Dernier message: 17/01/2011, 20h01
  2. Forward d�claration et r�f�rences ?
    Par Jeromnimo dans le forum C++
    R�ponses: 3
    Dernier message: 28/06/2010, 14h01
  3. Classe generics et forward d�claration
    Par stanislas dans le forum Langage
    R�ponses: 5
    Dernier message: 02/04/2010, 10h52
  4. D�claration forward ou external non-satistaite
    Par Invit� dans le forum D�buter
    R�ponses: 12
    Dernier message: 13/07/2008, 11h04
  5. D�claration forward ou external non satisfaite
    Par manel77 dans le forum Delphi .NET
    R�ponses: 2
    Dernier message: 27/07/2007, 12h29

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