operator[] soll eine structure zurückgeben



  • Hi,

    ich suche für folgendes Problem Unterstützung. Beispiel:

    struct Person {
        char* Name;
        char* Vorname;
        ...
    };
    
    class XMalPersonen {
      public:
        ...
        Person* operator[](int Number) {return (XPersonen[Number]);};
      private:
        ...
        Person**   XPersonen;
    };
    

    Eigentlich sollte das Verwenden des operator[] einen Zeiger auf die structure Person zurückgeben.
    Das funktioniert zwar (zumindest das Compilieren). Wenn ich jetzt allerdings außerhalb der Klasse folgendes probiere:

    XMalPersonen* Pers = new XMalPersonen;
    printf("%s\n", Pers[0]->Name);
    

    erhalte ich die Compiler-Fehlermeldung:

    base operand of '->' has non-pointer type 'XMalPersonen'

    Mein Ziel ist praktisch einen Aufruf, wie in der letzten Codezeile sichtbar, zu realisieren.



  • Pers ist ein Zeiger. Also:

    (*Pers)[0]->Name



  • Super funktioniert.

    Aber kann man das auch irgendwie umgehen, so daß ich visuell zu dem Aufruf komme, den ich eigentlich erreichen wollte. Und das nur mit Änderungen an der Klasse. Ich weiß, ich könnte es umgehen, wenn ich Pers nicht als Zeiger deklarieren würde. Wäre aber gut, wenn das trotzdem ginge!



  • BorlandUser schrieb:

    Aber kann man das auch irgendwie umgehen, so daß ich visuell zu dem Aufruf komme, den ich eigentlich erreichen wollte. Und das nur mit Änderungen an der Klasse.

    Wenn die Null bei Pers[0] als Argument für XMalPersonen::operator[] benutzt werden soll: Nein, das geht nicht.


Anmelden zum Antworten