У меня есть небольшая математическая библиотека для 3d-вектора и Im, пытающаяся «унифицировать» ее.C Typedef Struct/Union auto-cast
Вместо того, чтобы несколько ЬурейиХ-структуры для vector3f, vector3i, color3, углов и т.д. ... Im пытаясь поставить все в тех же структуры, как это:
typedef struct
{
union
{
float x;
float r;
float ax;
int x_int;
};
union
{
float y;
float g;
float ay;
int y_int;
};
union
{
float z;
float b;
float az;
int z_int;
};
} vec3;
Все работает персиковым до тех пор, как тип float, однако, когда он падает до int Im, имеющего некоторые странные значения (что понятно). Мой вопрос: есть ли способ напрямую или автоматически преобразовывать внутри определения структуры или мне нужно создавать дополнительные функции для typecast между float и int?
Из приведенных ниже ответов, может быть, я должен изменить свой первоначальный вопрос к следующему:
Каков наилучший способ «объединить» (и унифицировать я имею в виду иметь как 1 структуры), чтобы быть способен обрабатывать одновременно следующим образом:
vector3f (с плавающей точкой х, у, г) vector3i (Int х, у, г) RGB (с плавающей точкой R, G, B) RGB (символ без знака г, g, b) Угол эйлера (ax, ay, az)
Заранее спасибо!
Чтобы уточнить, вы хотите написать в struct/union как 'int', но считывается из него как' float'? –
Почему бы просто не держать его как float, и когда вам нужно целочисленное значение, просто введите float-член в int. –