Bonjour,
voilà le code:
La classe SmartPointer ne définit aucune méthode virtuelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template<typename T> struct SmartPointerGeneric: public SmartPointer<GenericReference<T>, T> {};
Cela pose-t-il un problème si le destructeur de la classe SmartPointer n'est pas virtuel ?
Dans ce cas, il n'y a aucune variable membre ajoutée dans la classe fille.
Mais dans ce cas:
Est-ce une erreur de ne pas mettre le constructeur virtuel ?
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 template<typename T> struct GenericReference { ~GenericReference() { free(); } virtual void free() { delete _Ptr, _Ptr = 0; } int count; T *_Ptr; } struct SDL_Surface_Reference: public GenericReference<SDL_Surface> { virtual void free() override { SDL_FreeSurface(_Ptr); _Ptr = 0; } HahaHihiHoho npk; }
Et même si le constructeur n'est pas virtuel, est ce que le destructeur de npk (npk::~HahaHihiHoho()) sera appelé ?
Merci![]()
Partager