Как сделать так, чтобы уклон и наклон рычага ссылались на те же данные, что и x, y и z?
Вы не можете.
Так как вы хотите чтобы ссылаться на объект, вы могли бы использовать ссылку вместо этого, но это нарушает копирование - вы можете исправить конструктор копирования, используя определенный пользователем. Более того (как и ваше дублирование) это приводит к ненужным накладным расходам памяти.
Что вы можете сделать, это написать функцию, которая возвращает ссылку на член. как это:
struct Euler3D : Vector3D {
float& roll() { return x; }
Но это тоже не идеально, потому что вам, вероятно, нужен как минимум второй набор перегрузок для const, так что много шаблонов.
Я думаю, что это включает union или что-то в этом роде.
Вы можете использовать union, чтобы иметь псевдонимов для членов, но тогда вы не сможете получить наследство. Это разрешено:
struct Euler3D {
union { float x, roll; };
union { float y, pitch; };
union { float z, yaw; };
};
, который вы можете использовать точно так же, как в вашем фрагменте.