Partage
  • Partager sur Facebook
  • Partager sur Twitter

new et delete

avec des tableau

    17 janvier 2006 à 19:45:21

    bonjour j'ai créer une clas dans cette class je déclare un tableau comme suit :


     string * sValeurHexadecimalBinaire[];


    au moment de construire mon Instance, dans le constructeur il y as


    *sValeurHexadecimalBinaire = new string[16];


    mais maintenant, je voudrait dértuire ce tableau , mais je n'y arrive pas,

    dans le destructeur de mon Instance je tape :


    delete ValeurHexadecimalBinaire;


    aucun problème leur de la compilation , leur de la construction aussi mais au moment de détruire il y as un bug qui m'invite a envoyer un message a microsoft....
    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2006 à 19:47:52

      Tu devrais prendre un cours de c++ correct. delete [] devrait régler l'affaire pour l'instant.
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2006 à 20:27:41


        //---------------------------------------------------------------------------
        // Fichier1.cpp
        //---------------------------------------------------------------------------

        #include <iostream>
        #include "GestionEcran.cpp"
        using namespace std;

        class convertir
        {
        public:
         string * sValeurHexadecimalBinaire[];
         string * sValeurOctalBinaire[];
          convertir();
          ~convertir();
        };

        convertir::convertir()
        {
          *sValeurHexadecimalBinaire = new string[16];
          *sValeurOctalBinaire = new string[8];
        }

        convertir::~convertir() {
        delete[] *sValeurHexadecimalBinaire;
        delete[] *sValeurOctalBinaire;
        }

        int main() {
         convertir cv1;
         return 0;
        }


        leur de la compilation aucun problème
        et leur du lancement du .exe j'ai toujours le même problème messaged'erreur....
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2006 à 20:38:10

          Je ne vois même pas comment un tel truc peut compiler... Révise tes pointeurs sérieusement. Après c'est du C++ donc je ne peux pas trop dire le pourquoi du comment.
          • Partager sur Facebook
          • Partager sur Twitter
            17 janvier 2006 à 20:43:44

            Oulala c'est un code source de fou ça. Tu inclus plein de fois iostream, tu met trop de namespace (un seul suffit) et tu confond les string du C++ avec les char[] tu C.

            //---------------------------------------------------------------------------
            // Fichier1.cpp
            //---------------------------------------------------------------------------

            #include <iostream>
            #include "GestionEcran.cpp"

            using namespace std;

            class convertir
            {
            public:
             convertir();
             ~convertir();
            private:
             string *a;
             string *b;
            };

            convertir::convertir()
            {
              a = new string("ton string");
              b = new string("ton string");
            }

            convertir::~convertir() {
            delete a;
            delete b;
            }

            int main() {
             convertir cv1;
             return 0;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2006 à 21:07:29

              oui mais j'ai besoin de tableau.... et non d'une chaine a et b
              • Partager sur Facebook
              • Partager sur Twitter
                17 janvier 2006 à 21:15:21

                Dans ce cas :

                //---------------------------------------------------------------------------
                // Fichier1.cpp
                //---------------------------------------------------------------------------

                #include <iostream>
                #include "GestionEcran.cpp"

                using namespace std;

                class convertir
                {
                public:
                 convertir();
                 ~convertir();
                private:
                 string *a[5]; //remplace 5 par le nb d'éléments que tu veux
                 string *b[5];
                };

                convertir::convertir()
                {
                  a[0] = new string("ton string");
                  b[0] = new string("ton string");
                }

                convertir::~convertir() {
                delete[] a;
                delete[] b;
                }

                int main() {
                 convertir cv1;
                 return 0;
                }
                • Partager sur Facebook
                • Partager sur Twitter
                  17 janvier 2006 à 21:30:26

                  Quand on declare string a, on declare un objets a de la classe string qui déjà est une chaine de caractère, donc tu peux enlever les tableaux d'objets string (En clair : enlève toute les variables tableaux en les remplacant par des variables normal)
                  Aussi : Il faut inclure des .h et non des .cpp

                  PS : declare tes variables membres (de classe) en privée
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 janvier 2006 à 21:42:34

                    oui mais j'ai besoin des tableaux , pour stocker plus tard dans mon programme des valeurs binaire qui corresponde a l'hexa et a l'octal, une simple chaine de caractèe ne me permet pas ceci.... seul un tableau dans lequel je peux stocker des chaine me le permet.

                    en clair pour l'octal je vais avoir

                    *sValeurOctalBinaire[0]="000";
                    *sValeurOctalBinaire[1]="001";
                    *sValeurOctalBinaire[2]="010";
                    *sValeurOctalBinaire[3]="011";
                    *sValeurOctalBinaire[4]="100";
                    *sValeurOctalBinaire[5]="101";
                    *sValeurOctalBinaire[6]="101";
                    *sValeurOctalBinaire[7]="111";
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 janvier 2006 à 7:11:32

                      Oulah, tu ferais vraiment bien de réviser tes cours de C++.
                      //---------------------------------------------------------------------------
                      // Fichier1.cpp
                      //---------------------------------------------------------------------------

                      #include <iostream>
                      #include "GestionEcran.cpp"

                      using namespace std;

                      class convertir
                      {
                      public:
                       convertir();
                       ~convertir();
                      private:
                       string a[5]; //remplace 5 par le nb d'éléments que tu veux
                       string b[5];
                      };

                      convertir::convertir()
                      {
                      // pas sur que ca passe, à vérifier
                        a[0] = "ton string";
                        b[0] = "ton string";
                      }

                      convertir::~convertir() {
                      }
                      };
                      int main ()
                      {
                        convertir cv1;
                      }

                      Je vois pas pourquoi tu l'as déclaré en pointeur a,b
                      Après pourquoi se prendre la tete alors que les char* sont là pour ca :-°
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 janvier 2006 à 8:52:34

                        Il a déclaré ça en pointeur parce qu'il veut passer par le tas à mon avis. Autrement moi j'ai remplacé ses noms de variables par a et b parce que je voulais pas tout réécrire, tu peux les remplacer parce que tu veux.

                        <discret> asmanur ta oublié le return 0; </discret>
                        • Partager sur Facebook
                        • Partager sur Twitter

                        new et delete

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown