[C/C++] Void-Pointer auf Struktur casten??

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von myth2806, 19. November 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. November 2008
    Void-Pointer auf Struktur casten??

    Hi,

    ich stehe vor dem problem, dass ich einen void-Pointer auf eine Struktur casten muss. Wie mach ich das? Mein Ansatz:

    Code:
    void *ptr;
    struct strukturname *test;
    test->a = 1;
    test->b = NULL;
    
    ptr = (struct strukturname*) test;
    
    Das funktioniert soweit. Nur wenn ich einen Wert modifizieren will
    Code:
    ptr->a = 2;
    
    heisst es
    Code:
    warning: dereferencing void * pointer
    error: request for member a in something not a structure or union
    
    Weiß jemand wie ich das hinbekomme?

    greez myth

    //edit: Programmiersprache ist kein C++ sondern C
     
  2. 19. November 2008
    AW: Void-Pointer auf Struktur casten??

    Du musst den void-Zeiger auch beim Aufruf casten.

    Code:
    struct test
    {
     short a,b;
    };
    
    int main( void )
    {
     struct test abc = { 1,2 };
     void *cba = (struct test*)&abc;
    
     ((struct test*)cba)->a = 2;
    
     return 0;
    }
    Tipp: Mach dir 'n Makro ala

    Code:
    #define VPTOST(x) ((struct test*)x) /* void pointer to struct test */
    struct test
    {
     short a,b;
    };
    
    int main( void )
    {
     struct test abc = { 1,2 };
     void *cba = (struct test*)&abc;
    
     VPTOST(cba)->a = 2;
    
     return 0;
    }
     
  3. 19. November 2008
    AW: Void-Pointer auf Struktur casten??

    ah ja wunderbar.
    dankeschön!
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.