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++/CLI Discussion :

[C++/CLI] Emplacement pour la déclaration d'une enum dans un Form


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut [C++/CLI] Emplacement pour la déclaration d'une enum dans un Form
    Bonjour tout le monde,

    Un peu nouveau dans le monde du C++/CLI, je rencontre beaucoup de difficulté à déclarer une enum managé, et plus précisément où effectuer cette déclaration dans mon code.

    Pour le moment, je déclarais mes enum dans mon fichier .h, plus précisément à l'intérieur de ma classe managé. Soit :

    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
    #pragma once
     
    namespace MyNameSpace
    {<div style="margin-left:40px">using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
     
    __gc class MyClass
    {
    public:<div style="margin-left:40px">__value enum MyEnum { VAL1, VAL2, VAL3 };
    MyClass(void)
    {<div style="margin-left:40px">InitializeComponent();</div>}</div>protected:<div style="margin-left:40px">void Dispose(Boolean disposing)
    {<div style="margin-left:40px">if (disposing && components)
    {<div style="margin-left:40px">components->Dispose();</div>}</div></div>private:<div style="margin-left:40px">System::ComponentModel::Container * components;
     
    void InitializeComponent(void)
    {
    <div style="margin-left:40px">// Code supprimé ici</div>}</div>};</div>}
    Hors en reprenant un ancien projet d'un autre développeur, je ne suis pas capable de reproduire ce type de déclaration au même emplacement. Lorsque je passe ensuite à l'affichage de l'interface dans le designer, mon Visual Studio 2003 plante et je suis obligé de terminer l'application. Ensuite impossible de ré ouvrir le projet tant que je n'ai pas commenté ou supprimé cette enum.
    J'ai refait mes essais avec un projet vierge, aucun problème pour placer la déclaration de l'énum avec les membres public de ma classe. Ensuite retour dans le code du projet que j'ai récupéré et rebelote pour les crashs de Visual Studio.
    La solution que j'ai trouvé est de déclarer mon enum en dehors de ma classe, directement dans le namespace. A ce moment là, je n'ai plus de crash du designer de Visual Studio et à l'exécution tout à l'air de bien se passer...

    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
    #pragma once
     
    namespace MyNameSpace
    {<div style="margin-left:40px">using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
     
    __value enum MyEnum { VAL1, VAL2, VAL3 };
     
    __gc class MyClass
    {
    public:<div style="margin-left:40px">MyClass(void)
    {<div style="margin-left:40px">InitializeComponent();</div>}</div>protected:<div style="margin-left:40px">void Dispose(Boolean disposing)
    {<div style="margin-left:40px">if (disposing && components)
    {<div style="margin-left:40px">components->Dispose();</div>}</div></div>private:<div style="margin-left:40px">System::ComponentModel::Container * components;
     
    void InitializeComponent(void)
    {
    <div style="margin-left:40px">// Code supprimé ici</div>}</div>};</div>}
    Quelqu'un pourrait t-il éclairer ma lanterne car j'ai horreur de faire quelque chose que je ne comprends pas ... enfin en même temps cela provient surement de mon niveau pitoyable en programmation ...

    Où doit-on déclarer une enum dans une Winform en C++ pour que le code soit propre ???

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 76
    Points : 96
    Points
    96
    Par défaut
    Bonjour


    Je ne connais pas Visual Studio 2003, il y a peut être des différences avec Visual Studio 2005 que j'utilise.

    La déclaration de l'énumération se fait bien à l'endroit où tu l'effectues en revanche elle se déclare de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum class myEnum { VAL1 , VAL2 , VAL3 }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Merci pour ton aide.

    Le problème est que la syntaxe utilisée a changé au passage de VS2003 avec le .net 1.1 et VS2005 en .net 2.2.
    Je ne suis donc pas capable d'utiliser ta syntaxe.

    Merci quand même ^^

Discussions similaires

  1. Des erreurs dans la déclaration d'une enum
    Par moooona dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2008, 04h33
  2. WAS 6 : déclaration d'une ressource dans le JNDI
    Par elewandowski dans le forum Websphere
    Réponses: 6
    Dernier message: 11/12/2007, 17h43
  3. Réponses: 1
    Dernier message: 26/11/2007, 08h26
  4. Requête pour copie rapide d'une ligne dans la table ?
    Par renaud26 dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/10/2006, 09h52
  5. Réponses: 7
    Dernier message: 02/08/2006, 15h51

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