Bonjour,

J'aimerais savoir si ces bouts de code sont sûrs :
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
// Partie non accessible
uneClasse obj;
 
(...)
 
// Partie accessible
obj.~uneClasse();
new(&obj) uneSousClasse();
(...)
reinterpret_cast<uneSousClasse *>( &obj )->~uneSousClasse();
new(&obj) uneClasse();
 
//==================================//
 
// Partie non accessible
uneClasse *obj = new uneClasse();
 
(...)
 
// Partie accessible
obj->~uneClasse()
new(obj) uneSousClasse();
(...)
reinterpret_cast<uneSousClasse *>( obj )->~uneSousClasse();
new(obj) uneClasse();
 
(...)
 
// Partie non accessible
delete obj;
sachant que :
  • uneSousClasse et une sous-classe de uneClasse ;
  • uneSousClasse ne définit aucun attribut membre ni aucun membre statique (attribut ou fonction) ;
  • le destructeur de la classe uneClasse n'est pas (forcément) virtuel ;
  • je n'ai pas accès à la classe uneClasse ;
  • je n'ai pas forcément accès à la classe uneSousClasse ;
  • je n'ai pas accès à la création de l'objet (ni à sa destruction).


Je sais que ce n'est pas propre, mais je n'ai pas vraiment le choix...

Merci d'avance.

Edit : J'ai ajouté la gestion de la destruction des objets.