То, что вы создали, это не анонимный участник, а анонимный тип (который сам по себе бесполезен).Вы должны создать члена вашего анонимного типа.Это касается как вашей структуры, так и вашего объединения.
Настройте заголовок так:
struct Vector
{
union
{
float elements[4];
struct
{
float x;
float y;
float z;
float w;
} v;
} u;
float length();
};
Теперь вы можете получить доступ к своим членам следующим образом:
u.elements[0] = 0.5f;
if(u.v.x == 0.5f) // this will pass
doStuff();