У меня есть следующие два союзов:Круговые операторы приведения между двумя союзами
union rgb_color
{
struct {
float red;
float green;
float blue;
};
float raw[3];
};
union hsv_color
{
struct {
float hue;
float saturation;
float value;
};
float raw[3];
}
Я хотел бы добавить к operator hsv_color()
rgb_color
union
и operator rgb_color()
к hsv_color
union
. Есть ли способ сделать это? Если я вперед объявить hsv_color
, компилятор выдает следующее сообщение об ошибке:
error: return type 'union hsv_color' is incomplete
Чем больше я пытаюсь осуществить это, тем больше я думаю, я должен просто создать две функции для преобразования вместо того, чтобы использовать неявное приведение операторы. Тем не менее, я хотел бы знать, возможно ли это. Какие-либо предложения?
Я надеюсь, что вы не делаете тип-Пунин с этими союзами: например, запись в 'raw', а затем чтение из' оттенка 'и наоборот - UB –
@Revolver_Ocelot: Если UB вы имеете в виду неопределенное поведение, то, черт возьми, этого не знали! Это только на C++ или также в C? – xx77aBs
Вот как работают профсоюзы, если вам нужны «сырые» и «оттенки» в одно и то же время, возможно, это не должно быть объединением в первую очередь. – user463035818