const correctness bei Pointer



  • Ich habe eine Klasse, die als Attribut einen Pointer auf ein Objekt dieser Klasse hat. Dieses Attribut kann nur per ctor initalisiert werden.
    Ich will dem Ersteller der Klasse versichern, dass ich, sofern er einen Pointer übergibt, nichts damit machen werde (löschen). Ich rufe lediglich die Methoden auf, die mir angeboten werden.
    Wie sieht die Syntax dafür aus? Egal was ich mache, dass Teil ist nie const und ich kann immer

    delete *myPtr; // aufrufen...
    

    Eine 0 zuweisung muss natürlich auch möglich sein, falls kein Pointer vom Anwender übergeben wird:

    myPtr = 0;

    Dachte an

    myKlasse const *myPtr; const
    

    Was aber wie bereits geschrieben nicht funktioniert.... danke für eure Hilfe 🙂



  • CCP schrieb:

    Ich will dem Ersteller der Klasse versichern, dass ich, sofern er einen Pointer übergibt, nichts damit machen werde (löschen).

    also delete unterbinden? geht net.



  • Na klar geht das. Mach den d'tor private/protected und mach den Ersteller, bzw. den, der den Zeiger am Ende loeschen soll, zum Friend.



  • Hallo,

    const kann man verschieden anwenden:

    int j = 578; 
    
    int *p = &j;  //Variabler Zeiger, variables Objekt 
    
    const int *p2 = &j;  //Variabler Zeiger, konstantes Objekt 
    //int const *p2 = &j;  //ebenso: Variabler Zeiger, konstantes Objekt 
    
    int * const p3 = &j; //Konstanter Zeiger, variables Objekt 
    
    const int * const p4 = &j;  //Konstanter Zeiger, konstantes Objekt
    

    Btw. Wieso eigentlich keine Referenz verwenden?

    MfG

    GPC


Anmelden zum Antworten