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 :

Struct et classes


Sujet :

C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut Struct et classes
    Hello,

    Je définis une structure et une classe dans le fichier dudule.h comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct Pouet
    {
    int champ1;
    charf champ2;
    ...
    }
     
    class Dudule
    {
    ...
    Pouet mPouetInstance;
    ...
    }
    Dans le fichier dudule.cpp, j'aimerais utiliser mPouetInstance dans une des méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "dudule.h"
     
    Dudule::fonction(...)
    {
    ...
    int entier = mPouetInstance.champ1;
    ...
    }
    Mais ça ne fonctionne pas. mPouetInstance n'est pas reconnu comme une structure. Pourquoi ?

    Je crois que j'ai oublié quelques fondamentaux. :-)

    Merci !

  2. #2
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 895
    Points : 1 911
    Points
    1 911
    Par défaut
    Il manque des ; à la fin de tes déclarations, mais je suppose que c'est que tu as oublié de les retranscrire dans ton post. Sinon, avec ce code je ne vois pas ce qui peut bloquer, ça se situe sans-doute autre-part.

    Si ta structure Pouet est très fortement liée à ta classe dudule, tu peux la déclarer au sein de ta classe, afin d'en limiter la portée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class dudule
    {
        public:
        struct pouet { ... };
     
        private:
        pouet Instance;
    };
    Si tu as besoin de l'utiliser à l'extérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dudule::pouet instance_externe; // Résolution de portée pour chercher 'pouet' dans 'dudule'

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 352
    Points : 20 359
    Points
    20 359
    Par défaut
    Cela fonctionne parfaitement sous VC++ 6
    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
     
    //.....................fichier .h
     
    struct Pouet
    {
    int champ1;
    int champ2;
     
    };
     
    class Dudule
    {
    void Fonction();
     
    Pouet mPouetInstance;
    };
     
    //.....................fichier .cpp
    void Dudule::Fonction()
    {
    mPouetInstance.champ1 =10;
     
    }

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 704
    Points
    2 704
    Par défaut
    Oui, mais non... Il manquait un léger détail...

    La fonction utilisatrice était déclarée en static.

    Désolé de vous avoir fait perdre du temps.

    Mais il faut avouer que le message du compilateur n'éclairait pas beaucoup :

    1>t:\svn\arnold\mtoa\src\core\callback.cpp(41) : error C2228: la partie gauche de '.finished' doit avoir un class/struct/union

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

Discussions similaires

  1. Passer de struct (C) à class (JAVA)
    Par rtg57 dans le forum Langage
    Réponses: 8
    Dernier message: 01/05/2010, 23h50
  2. [Débutant] Struct v Class !
    Par F.Saad dans le forum C#
    Réponses: 3
    Dernier message: 27/07/2009, 13h21
  3. diff entre struct et class
    Par camboui dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2009, 19h53
  4. struct et class
    Par zais_ethael dans le forum C++
    Réponses: 17
    Dernier message: 11/03/2008, 20h17
  5. Struct ou classe ?
    Par Fl0r3nt dans le forum C++
    Réponses: 8
    Dernier message: 27/06/2007, 12h27

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