(void**)&pVerti ??



  • (void**)&pVerti
    

    Kann mir jemand verklickern, was das für'n Sinn hat?



  • auf einen void pointer casten? wo ist das problem? void ist auch ein datentyp und ende.



  • was kann ich mir denn unter

    void
    

    genau vorstellen?

    Dachte void zeigt ins Nichts...



  • Ein void* kann auf alles zeigen.



  • void* zeigt auf einen typenlosen Speicherbereich, du darfst also alles nach void* casten. Wenn du jetzt bereits einen Zeiger auf ein Objekt hast und den per Referenz übergeben willst muss ein void** her.

    Das wird vor allem in Bibliotheken mit COM-Design oftmals verwendet um Interfaces zu holen.

    MfG SideWinder



  • smartina schrieb:

    was kann ich mir denn unter

    void
    

    genau vorstellen?

    Dachte void zeigt ins Nichts...

    Viele glauben void seie noch nicht mal ein Datentyp, dem ist aber nicht so.



  • Laut Standard ist void die leere Menge, und ein unvollständiger Datentyp. Das bedeutet, Es ist nicht möglich, Instanzen von void zu erstellen. Außerdem soll jeder andere Datentyp explizit nach void umwandelbar sein - das wohl vor allem, damit man void* als pointer auf alles benutzen kann.

    In der Realität ist sowas aber unschön, weil die Typsicherheit völlig über den Jordan geht. Viele benutzen es, weil es einfacher zu implementieren ist, dafür ist es nachher aber auch schwerer zu benutzen. Wenn du irgendwo nen void* im Code siehst, kannst du dich auf lange und sehr nervige Debug-Sessions einstellen.



  • Außerdem soll jeder andere Datentyp explizit nach void umwandelbar sein - das wohl vor allem, damit man void* als pointer auf alles benutzen kann.

    Nope. Zwar kann jeder *Ausdruck* explizit nach void konvertiert werden, das heißt aber nicht, dass ein void* als Pointer auf alles benutzt werden kann. Ein void* kann alle Objektzeiger aufnehmen, nicht aber z.B. Funktionszeiger.



  • in vielen fällen lässt sich das mit templates eleganter lösen
    die ganzen winapi funktionen nutzen auch void*s was zur folge hat, dass man dann auch die größe mitgeben muss


Anmelden zum Antworten