Salut, je n'ai trouvé aucun sujet dessus (ca m'affiche plus de 11 pages de résultats).

Je voulais savoir si on a le droit de faire, dans une fonction membre, 'delete this'.

par exemple

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
#include <iostream>
 
using namespace std;
 
class A
{
  public:
    //fonction qui contient delete this
    void erase();
};
 
void A::erase()
{
  cout << "destruction par erase() d'un objet de type A" << endl;
  delete this;
}
 
int main()
{
  A *human = new A();
  human->erase();
  delete human;
  cout << "Fin du programme sans problème" << endl;
  return 0;
}
Je vais avoir deux fois la destruction de l'objet sans aucun problème, il n'y a aucune erreur. C'est comme si l'objet n'était pas détruit par human->erase().

Donc ne marche pas?

edit: j'aurais dû utiliser