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
...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 :)