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 :

évènement non prévu dans un petit programme


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut évènement non prévu dans un petit programme
    Bonjour,
    je suis débutant en C++. Voici le programme que j'ai écrit :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    *******************************************
    *******************************************
    #include <cstdlib>
    #include <iostream>
    #include <string.h>
     
    using namespace std;
    /****************** class chaine ****************
    *************************************************/
    class chaine
    {
          public:
                 chaine(const char* _val);
                 void affiche();
     
                  int longueur;
                  char* val;
    };
     
    chaine::chaine(const char* _val)
    {
        longueur=strlen(_val);
        cout<<"ca passe"<<endl;
        cout<<" _val="<<_val<<"  longueur="<<longueur<<endl;
        char* val=new char[longueur+1];
        strcpy(val,_val);
        cout<<" val="<<val<<endl;
    }
     
    void chaine::affiche()
    {
         cout<<"chaine val="<<val<<endl;
    }
     
     
     
     
    int main(int argc, char *argv[])
    {
        chaine chn1("test1");
        cout<<"chn1.longueur="<<chn1.longueur<<endl;
        cout<<"chn1.val="<<chn1.val<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }[/COLOR]************************************************
    J'ai 2 choses non prévu :
    premièrement, lorsque je construit une chaine chn1 avec "test1" comme argument, le constructeur fonctionne correctement (j'ai vérifié) : le membre val (pointeur de caractère) est bien initialisé par "test1". Mais lorsque je vérifie après sa valeur (chn1.val) dans le programme principal il ne m'affiche plus rien. val s'est vidé. Je ne comprend pas.
    Deuxièmement à la fin du programme, j'ai une fenêtre d'erreur qui s'affiche avec le message : programme2.exe a rencontré un problème et doit fermer. je ne comprend pas où il y a un deuxième BUG.
    Qui pourrait répondre à mes 2 questions ? Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    je pense que tu redéfinis val dans ton constructeur, du coup tu n'utilises pas ton attribut membre mais une variable locale. Il suffit que tu enlève le char* de "char * val = ..."

    Généralement, les attributs d'une classe sont mis en private, et pour éviter ce type d'erreur tu peux y accéder par des accesseurs (get() et set() ) ou tu peux mettre explicitement "this->val = ..."

    sinon euh c'est pour l'école?

    tu as pensé au destructeur?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut remerciements
    Merci Nikko, ça marche.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    Citation Envoyé par flamant
    Merci Nikko, ça marche.
    tu fais un new sans faire de delete

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

Discussions similaires

  1. Intégrer des fichiers .java non compilés dans un autre programme
    Par getrude dans le forum EDI et Outils pour Java
    Réponses: 18
    Dernier message: 20/04/2012, 16h59
  2. [1.x] left join non prévu dans le schema
    Par erictomcat dans le forum Symfony
    Réponses: 22
    Dernier message: 28/09/2010, 23h15
  3. problème d'arguments dans un petit programme
    Par chicabonux dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/09/2009, 09h47
  4. Problème dans un petit programme
    Par Maxou88 dans le forum Débuter
    Réponses: 7
    Dernier message: 29/11/2008, 17h55
  5. Problème dans un petit programme !
    Par Cody082 dans le forum Langage
    Réponses: 11
    Dernier message: 17/10/2007, 08h20

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