1

これが私の問題です。0から1の範囲の4つのfloatから色を作成するコンストラクターがあります。0から255intとの互換性を追加したいので、次のような別のコンストラクターがあります。

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フロートコンポーネントは奇妙な数になります。これの何が問題になっていますか?

ありがとう

4

1 に答える 1

4

C ++ 03は、コンストラクターの委任(a / k / aチェーン)をサポートしていません。他のコンストラクターをJavaスタイルで呼び出すと、作成中のオブジェクトに影響を与えることなく、一時オブジェクトが作成されます。

これで修正される可能性がありますが、メンバーを直接初期化するほど効率的ではありません。

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));
}
于 2010-11-03T00:23:00.913 に答える