The dat member is a void*, so it doesn't have a w member. However, the void* is really a BITMAP, so we cast it: (BITMAP*) datafiles::sprites_enemies[1].dat. From there, we take the w member: ((BITMAP*) datafiles::sprites_enemies[1].dat)->w. This is the order of operations, and it is said that the -> binds "tighter" than the (BITMAP*), so we have to use parentheses to switch the order.