Zeiger auf EIgenschaften eineer Klasse



  • Hallo,
    wo ist der Unterschied zwischen den Beiden Zugriffen:

    Objekt.*ElementPtr
    
    ObjektPtr->*ElementPtr
    

    Doch eigentlich, dass beim Ersten <ich das Objekt direkt angebe, und darüber auf ein Element dieses Objekts, welches durch den Zeiger bestimmt wird zugreife.

    Beim 2. <<<ist beides ein Zeiger. Doch nun steht in meinem Buch folgendes:

    int durchschnit(Mensch* MenschPtr...) {
        ...
        unsigned int Mensch:alterPtr
        alter Ptr=&Mensch:alter;
        gesamt+=MenschPtr[i].*alterPtr;
    }
    

    Ein die Methode wird ein Array aus Objekten übergeben.
    Aber bei

    gesamt+=MenschPtr[i].*alterPtr;
    

    ist doch auch beides ein Zeiger, oder? Wieso wird dann nicht die 2. Variante genommen. Und könnte ich nicht stattdessen auch:

    gesamt+=MenschPtr[i].alter;
    

    schreiben, da ja der alerPtr eh immer auf die gleiche Eigenschaft zeigt.


  • Mod

    Pointer->Methode();
    

    ist eine Abkürzung für

    (*Pointer).Methode();
    
    Pointer[i].Methode();
    

    ist eine Abkürzung für

    (*(Pointer + i)).Methode();
    

    Nun klar?



  • Das erste ja, das 2. noch nicht ganz. Im Buch steht ja, dass in diesem Fall der Zugriff über ein Objekt erfolgt. Er efolgt ja aber auch über einen Pointer.



  • Das erste ja, das 2. noch nicht ganz. Im Buch steht ja, dass in diesem Fall der Zugriff über ein Objekt erfolgt. Er efolgt ja aber auch über einen Pointer.

    Ja, denn der Pointer zeigt auf das Objekt (im Speicher) welches über diesen angesprochen wird und somit stimmt das auch wieder.

    Mfg Wikinger75!



  • aber hier:

    ObjektPtr->*ElementPtr
    

    zeigt doch der ObjektPtr auch auf ein Objekt und mam muss den Pfeiloperator verwenden.


Anmelden zum Antworten