Deque aus Zeigern



  • Hallo,

    ich muss einige C++ Experten mal um ihren fachmännischen Rat fragen:

    Folgendes Szenario:

    Wir haben ein Struct:

    struct MyStruct {
       int val1;
       char text[256];
    };
    

    und einen Typ definiert als

    typedef std::deque<MyStruct*> DType;
    

    Innerhalb einer Klasse wird nun ein Member dieses Types definiert und eine Methode die das Member zurückgibt.

    class MyClass {
       ...
       public:
          DType& GetMyDeque() {
                 return MyDeque;
          }
       private:
          DType MyDeque;
    }
    

    Von Aussen wird mittels der Get Methode ein Handle auf das Objekt geholt:

    DType& MyDequeToo = MyObject.GetMyDeque();
    

    Nun zur Ersten Frage:

    Was GENAU passiert in der Get-Methode? Gibt die Methode eine Referenz auf das Member zurück? Es steht ja ein "return Member" und nicht wie wenn man zum Beispiel einen Zeiger auf das Objekt zurückgeben wöllte "return Adresse des Members". Oder kopiert diese Methode das gesamte Objekt bei Übergabe?

    Zweite Frage:

    Wenn ich Daten anhängen will, an das Deque, dann lege ich zunächst ein Zeiger auf ein Element an, allokiere Speicher, und hänge den zeiger an, also:

    MyStruct* MyPointer;
    MyPointer = new MyStruct();
    MyPointer->val1=99;
    
    MyDequeToo.push_back( MyPointer );
    

    Sollte doch ok sein oder? Was ist nun wenn ich ein Element wieder lösche mittels Pop. Muss ich dann den Speicher wieder mit delete freigeben? oder erledigt das pop für mich?

    Danke
    und Gruß
    mc_ginley



  • Zu eins: du lieferst eine Referenz auf das Private element. dadurch ist natürlich deine gesammte Kapselung im Arsch, da ja jeder an das Originalobjekt rankommt.

    Zu zwei: Du musst selbst löschen.


Anmelden zum Antworten