C++ Primer Aufgabe



  • Was für C++ Casts würdet ihr bei folgenden Beispielen verwenden:

    int ival;
    double dval;
    const string *ps;
    char *pc;
    void *pv;
    
    pc = (void*)ps;
    ival = int(*pc);
    pv = &dval;
    pc = (char*) pv;
    

    Meine Lösung:
    -reinterpret
    -reinterpret
    -ka
    -static

    Aber ich glaub nicht dass des unbedingt stimmt. 🙂

    MfG
    Stromberg



  • a) reintrpret_cast (besser garkeinen, da lässt man besser die Finger von)
    b) garkeinen cast. pc dereferenzieren gibt einen char, der ist implizit in einen int konvertierbar
    c) ohne cast lassen wie im C-Beispiel. &dval gibt einen double*, der ist (wie jeder Pointer) in void* konvertierbar
    d)static_cast



  • pumuckl schrieb:

    a) reintrpret_cast (besser garkeinen, da lässt man besser die Finger von)

    Nein, a) erfordert zusätzlich einen const_cast .

    Ansonsten stimme ich dir aber zu. 🙂


  • Administrator

    Nexus schrieb:

    pumuckl schrieb:

    a) reintrpret_cast (besser garkeinen, da lässt man besser die Finger von)

    Nein, a) erfordert zusätzlich einen const_cast .

    Ansonsten stimme ich dir aber zu. 🙂

    Und zusätzlich würde ich nicht ein reinterpret_cast<void*> machen, sondern ein reinterpret_cast<char*> , sonst gibt es einen Kompilerfehler. Wieso eigentlich den Umweg über void* im C-Cast?

    Grüssli



  • Dravere schrieb:

    Und zusätzlich würde ich nicht ein reinterpret_cast<void*> machen, sondern ein reinterpret_cast<char*> , sonst gibt es einen Kompilerfehler.

    Stimmt, das hab ich eigentlich mal angenommen.

    Dravere schrieb:

    Wieso eigentlich den Umweg über void* im C-Cast?

    Wenn das ein C++-Beispiel sein soll, würde der Cast gar nicht gehen. In C war void* noch implizit konvertierbar...


Anmelden zum Antworten