次のコードでは、
typedef unsigned long col24;
inline col24 MakeRGB24(int R, int G, int B) { return ...; }
struct blitdata
{
union
{
int Flags, Stretch;
col24 Luminance;
};
// (other members)
};
int main()
{
blitdata BlitData =
{
MakeRGB24(0, 0, 0),
// ...
};
}
BlitData
の初期化子リストの最初の初期化子で次のエラーが発生するのはなぜですか:
非定数式を型
col24
(akaunsigned long
) からint
イニシャライザ リストに絞り込むことはできません
コンパイラは、メンバの初期化に使用するのではなく、型の初期化子を使用してのint
メンバを初期化しようとするのはなぜですか?union
col24
col24
コンパイラは I がtostatic_cast
の結果であることを示唆しますが、これは望ましくない縮小をもたらす可能性があります。MakeRGB24
int
初期化子リストLuminance
の結果を使用してメンバーを正しく初期化するにはどうすればよいですか?MakeRGB24
編集: blitdata
PODのままにする必要があります。