Speicheradresse als Integerzahl dem Zeiger zuweisen?



  • Wahrscheinlich geht es darum:
    [C++]
    void Foo(Object bar)
    {
    ...
    }

    int main()
    {
    Object* obj = new Object;
    ...
    Foo(obj); // Fehler
    Foo(*obj); // OK
    }
    [/C++]



  • Wahrscheinlich geht es darum:

    void Foo(Object bar)
    {
    ...
    }
    
    int main()
    {
    Object* obj = new Object;
    ...
    Foo(obj); // Fehler
    Foo(*obj); // OK
    }
    


  • Roger Wilco schrieb:

    @drakon: Warum kein C++-Cast?

    Weil ich keine Lust habe ständig über die Vor/Nachteile von C/C++ casts zu reden. Das Thema wird imo genug durchgekaut.



  • Zeiger 64 Bit und int nur 32 Bit gross.

    Das heisst, wenn ich das Programm in 64 bit kompiliere, ersetze ich sie einfach durch __int64 ?



  • drakon schrieb:

    Weil ich keine Lust habe ständig über die Vor/Nachteile von C/C++ casts zu reden.

    Da gibts doch nicht viel zu reden. In C++ verwendet man C++ casts und in C verwendet man C casts 😉



  • xBlackKnightx schrieb:

    Zeiger 64 Bit und int nur 32 Bit gross.

    Das heisst, wenn ich das Programm in 64 bit kompiliere, ersetze ich sie einfach durch __int64 ?

    Kann man das nicht mit size_t erschlagen?



  • dot schrieb:

    drakon schrieb:

    Weil ich keine Lust habe ständig über die Vor/Nachteile von C/C++ casts zu reden.

    Da gibts doch nicht viel zu reden. In C++ verwendet man C++ casts und in C verwendet man C casts 😉

    Wenn das für manche so einfach wäre. ^^

    @xBlackKnightx
    Ja und Nein. Bei aktuellen 64Bit Systemen wird das so sein, aber es hindert niemanden ein System mit Zeigern der Grösse 128Bit zu bauen..
    Will heissen, dass die Grösse von int und Zeigern immer plattformabhängig ist und daher eine solche Konversion mit Vorsicht zu geniessen ist.



  • xBlackKnightx schrieb:

    Zeiger 64 Bit und int nur 32 Bit gross.

    Das heisst, wenn ich das Programm in 64 bit kompiliere, ersetze ich sie einfach durch __int64 ?

    Verwende das was die Library verwendet.
    Unter Windows gibt es z.B. eigene Typedefs dafür, z.B. INT_PTR, ULONG_PTR, DWORD_PTR etc.



  • Roger Wilco schrieb:

    Kann man das nicht mit size_t erschlagen?

    Mir wäre nicht bekannt, dass size_t sich an die Zeigergrösse anpassen würde. Mit hustbaers Rat fährt man wahrscheinlich besser.

    drakon schrieb:

    Weil ich keine Lust habe ständig über die Vor/Nachteile von C/C++ casts zu reden. Das Thema wird imo genug durchgekaut.

    Ein C-Cast provoziert aber viel eher eine Diskussion als ein C++-Cast 😉



  • Nexus schrieb:

    Ein C-Cast provoziert aber viel eher eine Diskussion als ein C++-Cast 😉

    *hehe*

    Genau das habe ich auch gedacht, aber lieber nichts gesagt... 😉


Anmelden zum Antworten