Partage
  • Partager sur Facebook
  • Partager sur Twitter

Où et comment faire les delete ?

    4 août 2008 à 22:36:45

    Bonsoir,

    Le problème est simple. Je crée un objet : m_objet = new objet(); mais forcement je dois faire un delete quelque part. Or je veux que ça se fasse au moment où je quitte mon programme (croix rouge ou bouton quitter).
    Je ne sais pas où ni comment placer mon destructeur pour qu'il soit appelé a ce moment précis.

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2008 à 22:39:00

      tu parles de GUI, donc, "quelle lib ?"
      • Partager sur Facebook
      • Partager sur Twitter
        4 août 2008 à 22:41:23

        Le destructeur est appelé automatiquement lorsque l'on ferme le programme.
        • Partager sur Facebook
        • Partager sur Twitter
        :)
          4 août 2008 à 22:41:42

          Citation : minirop

          tu parles de GUI, donc, "quelle lib ?"


          Heu oui pardon... Qt évidement :-°

          Citation : ocin

          Le destructeur est appelé automatiquement lorsque l'on ferme le programme.


          Dis moi pas que c'est pas vrai ^^ . Alors pour tout mes objets j'ai juste a écrire le destructeur et paf magie il va être détruit a la fermeture du programme ? :magicien: Mais j'écris ça où ?
          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2008 à 22:42:41

            Si l'objet dérive de QObject tu n'as pas besoin en revant si l'objet ne dérive pas de QObject alors besoin.
            • Partager sur Facebook
            • Partager sur Twitter
            :)
              4 août 2008 à 22:44:15

              Citation : ocin

              Si l'objet dérive de QObject tu n'as pas besoin en revant si l'objet ne dérive pas de QObject alors besoin.


              Bah oui c'est le probleme il hérite pas. Il est indépendant :lol:
              • Partager sur Facebook
              • Partager sur Twitter
                4 août 2008 à 22:55:31

                au pire tu a qu'a en hériter.
                • Partager sur Facebook
                • Partager sur Twitter
                :)
                  4 août 2008 à 22:57:08

                  Non ca ne me plait pas. J'ai aucun interet a hérité (a part celui là) y'a forcement un moyen plus "normal"
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 août 2008 à 22:59:06

                    Règle de base : Tu le détruis dans le destructeur de la de la classe dans lequel il est créé...

                    Est-il nécessaire que ce soit un pointeur ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 août 2008 à 23:10:31

                      Citation : MatteX

                      Règle de base : Tu le détruis dans le destructeur de la de la classe dans lequel il est créé...


                      Il est créer dans la fenetre principale qui hérite de QMainWindow (j'ai repris ce que nous a appris M@atéo). Du coup y'a pas de destructeur puisque Qt s'en charge tout seul. Mais je peux quand meme faire ca ? :

                      FenPrincipale::~FenPrincipale()
                      {
                      delete m_objet;	
                      }
                      


                      Citation : MatteX

                      Est-il nécessaire que ce soit un pointeur ?


                      :euh: je pense que non. Je me refere toujours a ce chapitre. Et là je me dis que non c'est pas franchement utile.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 août 2008 à 23:43:18

                        Non, un destructeur n'est pas appelé automatiquement à la fin d'un programme. Au mieux la mémoire et certaines ressources sont collectées, mais c'est tout -- si ton programme a déplacé des pots de peintures, ils ne seront pas remis à leur place automatiquement.

                        Pour qu'un destructeur soit automatiquement appelé, il faut refiler le pointeur à un objet qui, lors sa destruction, aura la responsabilité de détruire l'objet pointé. cf les pointeurs intelligents, et peut-être Qt suivant comment tu t'en sers (je suppute, suite à ce que je viens de lire plus haut, je n'utilise pas Qt)

                        MatteX, tout un des intérêts des pointeurs, c'est de s'échapper de la portée dans laquelle ils sont crées. Du coup, il n'est pas si fréquent de détruire où l'on crée -- sinon, effectivement, avec un membre implicitement collecté (de façon directe, ou indirecte (RAII)), et c'est plié.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                        Où et comment faire les 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