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 :

Problème de déclaration statique


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut Problème de déclaration statique
    Bonjour,
    Quelqu'un pourrait-il m'éclairer sur le point suivant. J'ai une classe (CToto)dont le constructeur prend un paramètre. Je souhaite utiliser cette classe dans une autre (CAutre) classe, j'essaye de déclarer une variable membre dans le .h de CAutre et cela ne fonctionne pas. Pourquoi?
    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
    class CToto
    {
        CToto(bool btest);
        ~CToto();
        .....
    }
    
    dans Autre.h
    
    class CAutre
    {
        ....
       CToto m_Toto(true);    //Incorrect Pourquoi?
       ....
    }

  2. #2
    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
    Parce que CToto n'est pas déclaré dans cette classe ? http://c.developpez.com/faq/cpp/?pag...erence_croisee

  3. #3
    Membre émérite Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Par défaut
    inclue la classe dont tu as besoin!!

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Ou parce que tu essaie d'initialiser une variable membre dans la déclaration de la classe ?

    L'erreur rencontrée (message du compilo, du linker, crash à l'exécution, etc...) pourrait nous aider à t'aider...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    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
    class CToto
    {
        CToto(bool btest);
        ~CToto();
        .....
    }
    
    dans Autre.h
    
    #include "Toto.h"
    ....
    class CAutre
    {
        ....
       CToto m_Toto(true);    //Incorrect Pourquoi?
       ....
    }
    [/QUOTE]

    Petite erreur de ma part lorsque j'ai rédigé le message. "Toto.h" est bein inclut dans "Autre.h"
    L'erreur que je rencontre est la suivante:
    error C2059: syntax error : 'constant'
    Si je défini le construteur de CToto avec un paramètre par défaut cela fonctionne, mais évidement cela ne m'arrange pas!

    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
     
    class CToto
    {
        CToto(bool btest=true);
        ~CToto();
        .....
    }
     
    dans Autre.h
     
    #include "Toto.h"
    ....
    class CAutre
    {
        ....
       CToto m_Toto;   
       ....
    }
    [/QUOTE]

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Il faut que tu initialises tes données membre dans le constructeur de la classe, et pas dans sa déclaration !

    Donc dans ton Autre.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "Toto.h"
    ....
    class CAutre
    {
       ...
       CAutre();
        ....
       CToto m_Toto;   
       ....
    }
    et dans Autre.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CAutre::CAutre():m_Toto(true)
    {}

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Initialise ton m_toto dans tous tes constructeurs de CAutres.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 303
    Par défaut
    Il y a des solutions, je suis bien d'accord. Mais ce que je ne comprend pas c'est pourquoi ce code ne fonctionne pas? Je veux utiliser ma classe CToto de deux manières différentes, quel est le problème à passer un paramètre lorsque je déclare une variable membre dans le .H. Si je fais la même opération dans autre.cpp je n'ai pas le problème si ce n'est que la visibilité de la variable est limitée à la fonction membre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CAutre::fct()
    {
       ....
       CToto toto(true); // correct
       ....
    }
    Le même problème est présent si j'essaye d'initialise une variable de type CString (en considérant que j'ai les includes nécessaires)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dans autre.h
       ....
       CString m_Str(_T("Bonjour")); //Incorrect
       ....

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2006, 12h13
  2. Réponses: 7
    Dernier message: 21/12/2005, 16h44
  3. problème de déclaration
    Par dirty_boy dans le forum C
    Réponses: 2
    Dernier message: 16/09/2005, 11h56
  4. Réponses: 11
    Dernier message: 29/04/2005, 19h45
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 10h17

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