So löschen Sie die aktuelle Instanz der Klasse mit Hilfe einer member-Funktion der gleichen Klasse

Im folgenden code, habe ich mein Konstruktor und Destruktor private und schuf meine eigene Instanziierung und löschen Funktionen. Aber wenn ich rufen Sie die Delete() Funktion, die delete this - Anweisung im inneren, es scheint, das Objekt entfernen, aber nicht informieren Sie den compiler aus, damit es denkt, dass das Objekt noch existiert. Ich dachte, es wäre eine gute Idee, den Zeiger auf null oder auf null, also habe ich ein this = 0 vor der delete-Anweisung, aber es hat überhaupt nicht funktioniert. Was soll ich in der Delete() Funktion, um vollständig zu löschen Sie das Objekt und Zeiger?

class MyClass
{
private:
  MyClass() {}
 ~MyClass() {}
public:
  static MyClass *Instantiate()
  {
    MyClass *inst = new MyClass;
    return inst;
  }
  void Delete()
  {
    delete this;
  }
};

int main()
{
  MyClass *inst1 = MyClass::Instantiate();
  inst1->Delete();
  return 0;
}
  • "aber nicht informieren Sie den compiler aus, damit es denkt, dass das Objekt noch existiert" - Was macht Sie sagen?
  • Da kann ich nicht wiederverwenden, das Objekt name
  • Bitte entfernen Sie das 'Diese Frage vielleicht schon hier eine Antwort' - label. Meine Frage bezieht sich nicht auf die Frage, die Sie erwähnt.
  • das banner entfernt werden, wenn die (fehlerhafte) Stimmen verfallen. Und nur Sie können es sehen, ist es nicht angezeigt, für andere Nutzer.
Schreibe einen Kommentar