проблема с int, чтобы плавать - PullRequest
1 голос
/ 03 ноября 2010

Вот моя проблема.У меня есть конструктор, который создает цвет от 4-х чисел в диапазоне от 0 до 1. Я хочу добавить совместимость с 0 до 255 int, поэтому у меня есть другой конструктор, такой как:

AguiColor::AguiColor( int r, int g, int b, int a )
{
 double num = 1.0f / 255.0f;
    AguiColor((float)(r * num), (float)(g * num), (float)(b * num), (float)(a * num));

}

Однако это не работает.Компоненты с плавающей точкой rgba становятся странными числами.Что не так с этим?

Спасибо

1 Ответ

4 голосов
/ 03 ноября 2010

C ++ 03 не поддерживает делегирование конструктора (a / k / a цепочка).Когда вы вызываете этот другой конструктор в стиле Java, он создает временный объект, не затрагивая строящийся объект.

Это может исправить это, но не так эффективно, как непосредственная инициализация членов.1003 *

AguiColor::AguiColor( int r, int g, int b, int a )
{
  double num = 1.0f / 255.0f;
  *this = AguiColor((float)(r * num), (float)(g * num), (float)(b * num), (float)(a * num));
}
...