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 :

passer un enum dans une classe


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut passer un enum dans une classe
    Bonjour

    j'ai une classe Instrument qui contient la définition d'une énumeration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Instrument{
    public:
    	enum Position{
    		Long =1,
    		Short =-1
    	};
    .......};
    J4ai une autre classe Strategy qui est une classe dont dérivent d'autres classes dans laquelle j'ai la ligne suivante qui pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Strategy{
    ...
    Strategy(Instrument::Position pos);
    ...
    };
    et qui me provoque les erreurs suivantes:
    TargetAllocation.cpp
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ')' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ';' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2838: 'Position' : illegal qualified name in member declaration
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2059: syntax error : ')'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2501: 'Strategy::pos' : missing storage-class or type specifiers
    Poche.cpp
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ')' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ';' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2838: 'Position' : illegal qualified name in member declaration
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2059: syntax error : ')'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2501: 'Strategy::pos' : missing storage-class or type specifiers
    Operation.cpp
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ')' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ';' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2838: 'Position' : illegal qualified name in member declaration
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2059: syntax error : ')'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2501: 'Strategy::pos' : missing storage-class or type specifiers
    Instrument.cpp
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ')' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2146: syntax error : missing ';' before identifier 'pos'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2838: 'Position' : illegal qualified name in member declaration
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2059: syntax error : ')'
    c:\Dev\DHTv8.7\Engine\Strategy.h(37) : error C2501: 'Strategy::pos' : missing storage-class or type specifiers
    Generating Code...
    Compiling...
    Strategy.cpp
    Generating Code...




    Si par contre j'enleve cette ligne, ca compile sans problème...

    Je ne vois pas ce qui cloche..???
    Si qqun voit je suis preneur :-)

    Merci

  2. #2
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut
    Salut,

    je te conseil de lire ce billet publié sur le blog des développeur
    http://blog.developpez.com/davidbrcz?title=title_101

    Aussi, je ne pense pas que tu puisse accéder à une énumération avec un opérateur de résolution de portée (a moins de déclarer ton énumération comme static ? je n ai jamais essaye cela).

    Passe simplement un instrument et accède l'enumertateur comme une simple propriété.
    all your base are belong to us.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    Okay je vais essayer, mais par contre est ce qu'on peut hériter un enum à travers une classe de base

    Instrument est ma classse de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Instrument{
    public:
    	struct Position{
    		enum Type {
    			Long =1,
    			Short =-1
    		};
    	};
    et si j'ai une classe Option qui dérive de Instrument
    Je n'arrive pas à acceder à Instrument:osition à partir de Option

    est ce normal???

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Le code suivant compile parfaitement chez moi :

    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 Instrument{
    public:
    	enum Position{
    		Long =1,
    		Short =-1
    	};
    };
     
     
    class Strategy{
    	Strategy(Instrument::Position pos) {}
    };
     
    int main()
    {
    }
    Et je ne vois pas où il y aurait le moindre problème... Peut-être as-tu un problème d'include ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 113
    Points : 53
    Points
    53
    Par défaut
    okay il s'agissait effectivement d'un probleme d'include et de structuration de mes fichiers


    POur ceuces qui comme moi ne lisent pas suffisamment la Faq, mais qui y retourne quand meme à un moment ou un autre pcq il y (quand meme) pas mal d'infos la bas :-)
    http://cpp.developpez.com/faq/cpp/in...ASS_header_cpp


    et http://cpp.developpez.com/faq/cpp/in...erence_croisee


    Bon allez je sors :-)


    Et merci encore hein

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

Discussions similaires

  1. Passer un argument dans une classe listener
    Par le_sayan dans le forum Débuter
    Réponses: 5
    Dernier message: 29/07/2010, 14h33
  2. Type enum dans une classe
    Par arthurembo dans le forum Langage
    Réponses: 2
    Dernier message: 21/05/2009, 12h38
  3. Passer un paramètre dans une classe
    Par soso78 dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/05/2008, 08h03
  4. enum dans une classe ?
    Par tintin72 dans le forum C++
    Réponses: 5
    Dernier message: 14/11/2007, 18h52
  5. declarer un enum dans une classe
    Par d-a-v-e dans le forum C++
    Réponses: 15
    Dernier message: 10/02/2006, 00h46

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