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 :

crash lors de l'instanciation d'une classe


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 24
    Points
    24
    Par défaut crash lors de l'instanciation d'une classe
    Bonjour,
    Au cour d'un projet j'ai besoin d'utiliser une matrice de booléen j'ai donc creer une classe matrice qui est composée d'instance d'une classe "cases" contenant un booléen.
    J'ai ensuite fait un tableau de ces "cases" que j'appelle matrice et lors de son instanciation ça crash.
    Je vous laisse mon code si vous arrivez a voir d’où ça peut venir
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    cases::cases()
    {
    	coul= NULL;
     
    }
    cases::cases(bool c)
    {
    	coul= c;
     
    }
    bool cases::getinfo()
    {
     
    	return coul;
    }
    void cases::setinfo(bool c)
    {
    	coul=c;
    }
     
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    //Classe matrice
     
     
     
     
     
     
     
     
    matrice::matrice()
    {
     
    	tab= new cases**[2];
     
        for(int i=0;i<2;i++)
        {
            tab[i]=new cases*[2];
            for (int j=0;j<2;j++)
            {
     
    			int r=(rand() % (6 - 1 + 1)) + 1;
    			switch (r)
                                {
                                    case 1:
    									tab[0][0]=new cases(true);
    									tab[0][1]=new cases(true);
    									tab[1][0]=new cases(false);
    									tab[1][1]=new cases(false);
                                        break;
                                    case 2:
                                        tab[0][0]=new cases(true);
    									tab[0][1]=new cases(false);
    									tab[1][0]=new cases(true);
    									tab[1][1]=new cases(false);
                                        break;
                                    case 3:
                                        tab[0][0]=new cases(true);
    									tab[0][1]=new cases(false);
    									tab[1][0]=new cases(false);
    									tab[1][1]=new cases(true);
                                        break;
                                    case 4:
                                        tab[0][0]=new cases(false);
    									tab[0][1]=new cases(true);
    									tab[1][0]=new cases(true);
    									tab[1][1]=new cases(false);
                                        break;
    								case 5:
                                         tab[0][0]=new cases(false);
    									tab[0][1]=new cases(true);
    									tab[1][0]=new cases(false);
    									tab[1][1]=new cases(true);
                                        break;
    								case 6:
                                        tab[0][0]=new cases(false);
    									tab[0][1]=new cases(false);
    									tab[1][0]=new cases(true);
    									tab[1][1]=new cases(true);
     
     
     
                                }
     
     
    		}
    	}
     
     
    }

  2. #2
    screetch
    Invité(e)
    Par défaut
    tu initialises tab[1][...]avant d'avoir initialisé tab[1].
    Ton code fait une boucle sur i, et alors que tu es sur i=0, tu touches a tab[1]
    et la, tu meurs. Bah oui.

    Ton code est pas très propre, c'est le moins qu'on puisse idre, et je te conseilles d'utiliser le C++ "pour de vrai" avec std::vector
    et d'éviter les tableaux de tableaux de tableaux de... etc etc.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Ben des vectors de vectors de vectors, ce n'est pas beaucoup mieux...

  4. #4
    screetch
    Invité(e)
    Par défaut
    ah je me suis mal exprimé, ma deuxieme remarque etait justement dans ce sens: de un, les tableaux devraient être implémentés avec des vector
    de deux, les structures trop profonde sont tout de suite suspectes (que ce soit des tableaux C ou des vector).

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Ça fait beaucoup de code pour quelque chose qui ressemble à un std::bitset<8>.
    http://www.cplusplus.com/reference/stl/bitset/

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    effectivement j'aurais peut être pu utiliser le std::bitset mais je connaissais pas
    Merci quand même j'ai pu résoudre mon problème

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/01/2015, 17h54
  2. Erreur lors de l'instanciation d'une classe
    Par Aloneghost dans le forum Langage
    Réponses: 6
    Dernier message: 21/06/2010, 21h14
  3. Null pointer lors de l'instanciation d'une class
    Par saraya dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2009, 17h53
  4. Réponses: 5
    Dernier message: 03/12/2006, 16h15
  5. Réponses: 5
    Dernier message: 04/10/2006, 15h45

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