Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1212 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Classe virtuelle pure & destructeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Classe virtuelle pure & destructeur

n°1454754
dweis
Posté le 10-10-2006 à 11:38:56  profilanswer
 

Je n'arrive pas bien à comprendre pourquoi le code suivant n'est pas valide.
Visiblement je ne peux pas appeller ma fonction virtuelle pure (foo) dans le desctructeur mais je ne vois pas pourquoi
 

Code :
  1. class T
  2. {
  3. public:
  4.   virtual ~T();
  5.   virtual void foo() = 0;
  6. };
  7. class S : public T
  8. {
  9. public:
  10.   virtual void foo();
  11. };
  12. T::~T()
  13. {
  14.   foo(); //<-- Le problème est ici (" error: abstract virtual `virtual void T::foo()' called from destructor" )
  15. }
  16. void S::foo()
  17. {
  18. //some code
  19. }

mood
Publicité
Posté le 10-10-2006 à 11:38:56  profilanswer
 

n°1455082
jesus_chri​st
votre nouveau dieu
Posté le 10-10-2006 à 20:49:41  profilanswer
 

parce qu'à ce stade, la partie dérivée est déjà détruite, donc tu ne peux pas appeler S::foo()

n°1455083
jesus_chri​st
votre nouveau dieu
Posté le 10-10-2006 à 20:51:05  profilanswer
 

dweis a écrit :

Je n'arrive pas bien à comprendre pourquoi le code suivant n'est pas valide.
Visiblement je ne peux pas appeller ma fonction virtuelle pure (foo) dans le desctructeur mais je ne vois pas pourquoi
 

Code :
  1. class T
  2. {
  3. public:
  4.   virtual ~T();
  5.   virtual void foo() = 0;
  6. };
  7. class S : public T
  8. {
  9. public:
  10.   virtual void foo();
  11. private :
  12.    int n;
  13. };
  14. T::~T()
  15. {
  16.   foo(); //<-- Le problème est ici (" error: abstract virtual `virtual void T::foo()' called from destructor" )
  17. }
  18. void S::foo()
  19. {
  20.     cout << n; //<= appelé depuis T::~T(), n n'existe déjà plus
  21. }



 
tu vois que ça ne peut pas marcher


Message édité par jesus_christ le 10-10-2006 à 20:51:39
n°1455154
dweis
Posté le 11-10-2006 à 00:16:48  profilanswer
 

Ok, merci. C'est ce que je pensais un peu mais je n'en étais pas bien sûr


---------------
Carte des stations Vélib
n°1456764
neg'gwada
rafix 971
Posté le 13-10-2006 à 13:52:58  profilanswer
 

cours de christian casteyde exemple 8-11
dans l'ordre
constructeur:
Exécution du constructeur de la classe mère.
Exécution du constructeur de la classe fille.
destructeur:
Exécution du destructeur de la classe fille.
Exécution du destructeur de la classe mère.


Message édité par neg'gwada le 13-10-2006 à 13:54:23

---------------
--- WinSplit Revolution ---

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Classe virtuelle pure & destructeur

 

Sujets relatifs
Notice: Undefined offset d'une fonction dans une classeUtiliser xml_set_element_handler() avec des méthodes d'une classe
[delphi] Classe abstraiteClasse simple pour mysql : questions !
besoin d'aide sur les module de classeInsérer une classe CSS dans un tableau PHP
fonction template d'une classe template[VBA] [Résolu] Appel foireux d'une classe d'arbre binaire
comment recuperer un identifiant de la classe mèreGénération dynamique des attributs d'une classe
Plus de sujets relatifs à : Classe virtuelle pure & destructeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR