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++Builder Discussion :

Pb lors de modification de valeur d'attribut d'une classe.


Sujet :

C++Builder

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut Pb lors de modification de valeur d'attribut d'une classe.
    Bonjour,

    J'ai un pb dans le programme suivant sous Borland C++ 6 :
    voici ma classe
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     enum objectType {big = 1, small, thin};
     
    class Classification
    {
    public :
     
     
     
            Classification(void);
            Classification(std::string FileName);
            ~Classification(void);
            void saveToFiles(std::string FileName);
            bool isLocked;
            bool useOnlyKnn;
            bool useOnlySom;
            bool useBoth;
            void learn(void);
            void updateClass(void);
            std::vector<float> *example;
            std::vector<float> *test;
            objectType knnClass;
            objectType som1Class;
            objectType som2Class;
            objectType finalClass;
            objectType obj;
     
    private :
            bool knnEmpty;
            SOM *som1;
            SOM *som2;
            Knn *knn;
     
    };
    et le .h qui contient le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    les entetes qu'il faut
    
    
    Classification *myClass = new Classification();
    
    class TMainForm : public TForm
    {
    les elements pour la GUI
    
    
    };
    j'ai un pb lorsque j'execute cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TMainForm::SmallObjectClick(TObject *Sender)
    {
            if(SmallObject->Checked)
            {
            myClass->obj = small;
            BigObject->Checked = false;
            ThinObject->Checked = false;
            }
            if(!BigObject->Checked && !ThinObject->Checked)
                          SmallObject->Checked = true;
    }
    Quand j'inspecte mon objet myClass, avant la ligne
    tout est bon (l'objet a bien ete initialise)
    mais apres, myClass->obj n'est pas modifie, mais c'est myClass->knn (qui est un pointeur) qui prend la valeur small (ici, small = 2, voir la def de l'enumeration.)

    Ou est-ce que ca peche????
    Merci de m'aider

    (Est-ce un pb parce que j'ai defini ma classe en dehors de TMainForm ????)

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classification *myClass = new Classification();
    Tu mets cette ligne dans un .h ?
    J'aurais mis ça dans un .cpp.

    Drôle de problème... à première vue ?

    A plus !

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut
    Voila ce que ca me fait (promis, ya pas de trucages)

    Avant:


    Apres:


    J'ai verifie, je n'ai fait aucun lien, egalite ou autre entre obj et knn, et si c'etait le cas... ben obj aurait aussi du changer de valeur.
    On est bien d'accord que les lettres obj sont bien differentes de knn, que ni obj ou knn ne sont des mots reserves de borland....
    Je n'y comprends plus rien de tout a ces compilateurs (ou alors je me suis choppee un virus vraiment malin qui me pourrit la vie)

    Quant a la definition de la variable myClass, j'ai modifie un peu :
    dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Classification *myClass = new Classification();
    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern Classification *myClass;
    Si je ne mets rien dans le .h, le changement est bien fait, mais mon objet myClass n'est pas du tout bien initialisee (pourtant, d'apres le deroulement du programme, on passe bien dans ma fonction d'initialisation qui doit allouer bien comme il faut, mais il n'en est rien, cf. image suivante)


    remarquez la non-initialisation

    Quelqu'un pourrait-il alors m'expliquer comment creer des variables globales qui n'auraient aucun de ces defauts?

    PS : apres quelques essais, quand je mets ou enleve le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern Classification *myClass;
    dans le .h, comme je faisais juste Run apres chaque modification, la classe n'etait pas bien initialisee et la valeur obj change bien (qu'il y ai une def dans le .h ou pas). Dans tous les cas, quand je re-compile avant de lancer l'application, l'objet est bien construit, mais c'est knn qui se modifie et non obj

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut
    Bon ben l'erreur est resolue...en cochant l'option " treat enum types as int " (c'est quoi ce compilateur qui ne fait pas ca d'office????)

  5. #5
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    bonjour,
    ceci est étrange j'ai compilé un code semblable chez moi sans l'option
    <traiter Enum com int > et cela fonctionne parfaitement bien
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

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

Discussions similaires

  1. passer la valeur d'un attribut a une classe
    Par filor dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 18/04/2009, 00h04
  2. affectation d'une valeur à l'attribut d'une liste
    Par cybermat3 dans le forum JSF
    Réponses: 1
    Dernier message: 16/03/2009, 08h54
  3. [RegEx] Changer la valeur d’un attribut dans une chaîne
    Par sara21 dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2008, 19h31
  4. Copie d'un fichier XML avec modification de valeur d'attribut
    Par CocoRambo dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/07/2007, 09h21
  5. Réponses: 1
    Dernier message: 17/04/2007, 22h07

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