Benachrichtigen wenn Objekt gelöscht wurde?



  • Folgende Problemstellung:

    Klasse XXX enthält ein zeiger auf ein Listenobjekt. Listenobjekt wird gelöscht, nun zeigt der der Zeiger aus XXX nach Nirvana.. wie könnt eich es lösen, damit XXX mitbekommt das objekt des Zeiger gelöscht wurde und evtl. auf NULL setzt? Wäre die schöneste lösung einen auto_ptr zu verwenden?

    Bitte keine diskussion wegen dem design 🤡

    std::list<Elem> LISTE;
    
    class Elem{
    ...
    
    };
    
    class XXX{
    public:
    Elem *p;
    
    };
    
    LISTE.add(Elem());
    
    XXX obj;
    obj.p= &(*(LISTE.begin());
    
    LISTE.erase(LISTE.begin());
    
    obj.p == NIRVANAAAAAAAA
    


  • BorisDieKlinge schrieb:

    Bitte keine diskussion wegen dem design 🤡

    Doch, genau darüber muss man hier diskutieren.



  • Bitte schlag mich nicht, aber für mich ist das auch eine Design-Frage. Denn jedes Objekt von XXX ist eine Erweiterung eines Listenknotens.

    Das bedeutet dass ich die Klasse XXX so erweitern würde das jeder Zugriff auf die Liste nur mittels eines XXX Objektes erfolgen kann.

    class Elem
    {
    ...
    
    };
    
    class XXX
    {
    public:
      Elem *p;
      LISTE* common_list;
    
    public:
      XXX(std::list<Elem>* list)
      {
         this->common_list = list;
      }
    
      void erease() 
      {
        common_list.erease(this->p);
        this->p = NULL;    
      }
    
    };
    
    int main(int argc, char** argv)
    {
      std::list<Elem> LISTE;
      XXX obj(&LISTE);
    
      LISTE.add(Elem());
      obj.p= &(*(LISTE.begin());
      obj.erease();
      return 0;
    }
    


  • Du könntest:
    o Callbacks verwenden
    o SharedPtr verwenden
    o Hazward Pointer verwenden



  • @David_pb: endlich mal kompetente anworten;)



  • BorisDieKlinge schrieb:

    @David_pb: endlich mal kompetente anworten;)

    Ja, nichtwahr? 😛



  • jepp ich mag es nicht wenn man das design kritsiert wenn man den hintergrund nicht kennt, und trozdem nörgelts jeder tzz.... auser du;) 👍



  • BorisDieKlinge schrieb:

    @David_pb: endlich mal kompetente anworten;)

    warum? weil er gesagt hat, was du hören wolltest?



  • BorisDieKlinge schrieb:

    jepp ich mag es nicht wenn man das design kritsiert wenn man den hintergrund nicht kennt, und trozdem nörgelts jeder tzz.... auser du;) 👍

    Ich hab auch nicht genörgelt!



  • BorisDieKlinge schrieb:

    Bitte keine diskussion wegen dem design 🤡

    Da besteht keinerlei Gefahr. Wenn schon wegen des Designs, was bei so ziemlich jeder Deiner Anfragen angebracht ist. Du solltest Dir endlich mal überlegen was Du da machen willst. Denn vor einigen Tagen hast Du faktisch dieselbe Anfrage nur anders formuliert gestellt. Und ich mußte erstmal nachsehen, ob das wirklich einer neuer Thread ist.


Anmelden zum Antworten