operator= und push_back()



  • Hallo, ich habe eine Klasse, in der ein dynamischer Speicherbereich rumfliegt:

    class Blub
    {
      Blub(){m_pData = 0;}
      ~Blub()
      { 
         if(m_pData)
          delete[] m_pData;
      }
      Blub& operator=( const Blub& aBlub );
      ....
      unsigned char* m_pData;
      ..
    };
    

    eine Instanz so einer Klasse mittels push_back in einen Container einfüge wird das Ding ja Kopiert. Da ich m_pData ja gern mitkopiert hätte habe ich dafür operator= überladen, das funktioniert auch:

    Blub* A = new Blub;
    Blub B = A;
    delete A;
    //in B steht immer noch das richtige -> kopiert von A

    Problem ist, das bei push_back wohl einfach mein operator= nicht aufgerufen wird(vermute ich zumindest mal). Bei den eingefügten Elementen zeigt der Zeiger immer noch auf den Bereich, den das einzufügende Element vorher hatte. Dieser Speicherbereich ist aber dann schon nicht mehr gültig, weil er ja im Destruktor gelöscht wurde.
    Warum das??



  • du hast vergessen copy-constructor zu realisieren.

    Blub(const Blub &obj)
    {
     ...
    }
    


  • Uuups, Ach ja, stimmt operator= wird ja da nicht genommen.. man lernt eben nie aus.

    Danke


Anmelden zum Antworten