Здраствуйте все.
Не подскажите как правильно перегрузить преобразование к типу int/unsigned? Например есть код:
class VRGB
{
public:
// Красная компонента
unsigned char r;
// Зеленая компонента
unsigned char g;
// Голубая компонента
unsigned char b;
// Альфа-составляющая
unsigned char a;
public:
// Перегрузка при ведения к типу int
operator int(){return *((int*)this);}
// Конструктор для типа int
VRGB(int Integer){ *((int*)this) = Integer; }
}
void SomeAction(int SomeValue)
{
...
}
int main()
{
int a;
VRGB b;
b = a;
a = b;
SomeAction(b);
}
Класс VRGB занимает 4 байта, ровно столько сколько занимает переменная типа int. Я правильно написал перегрузку? Будет ли работать код корректно если переменная b, будет хранится, например, в регистре? Или надо писать код перегрузки приведения по-другому?