accessing struct: derefrencing pointer to incomplete type

后端 未结 3 950
盖世英雄少女心
盖世英雄少女心 2021-01-27 08:58

When I\'m trying to use and access the pointers to my structs i keep getting the annoying message of \"dereferencing pointer to incomplete type\" ....

For e

3条回答
  •  [愿得一人]
    2021-01-27 09:39

    As I understand it you try to access the members of User...

    ...via a Element, which is a void *. This can not work, because the compiler does not know what type it should dereference. For example:

    int *intPtr = getIntPtr();
    //Here the compiler knows that intPtr points to an int, so you can do
    int i = *intPtr;
    
    User *userPtr = getUserPtr();
    //Here the compiler knows that userPtr points to an instance of User so you can do 
    User usr = *usrPtr;
    //or access its member via ->
    auto x = usr->someMember;
    
    Element el = getElementFromSomewhere();
    //el is of type void *!! void *can point to anything and everything
    //the compiler has no clue what you want to do! So this both fails:
    usr = *el; 
    el->someMember;
    

    You first need to tell the compiler what your void * is pointing to. To do that you cast the pointer:

    Element el = getElementFromSomewhere();
    User *usrPtr = (User *)el;
    

    I hope I understood your problem and this helps :)

提交回复
热议问题