は、このようなデフォルトコンストラクタとおもちゃstruct
を考えると初期化する:は、デフォルトコンストラクタを持つ構造体のパブリックメンバー
struct RGB {
unsigned char r, g, b;
RGB()
:r(0), g(0), b(0) {}
};
は、どのように私はへのアクセスを持っていないと仮定すると、特定の色に1を初期化します私自身のコンストラクタを追加するソースコード。
これらは動作しませんなぜ私は完全には理解していない:
// OK, I can sort-of accept this one
RGB red = {255, 0, 0};
// Not shorthand for green.r=0, green.g=255, green.b=0;?
RGB green = {.r = 0, .g = 255, .b = 0};
// I seem to be missing a constructor that accepts a list?
RGB blue{0, 0, 255};
は昔ながらを短縮するために、他のC++ 11の方法はあります:さらに
RGB yellow;
yellow.r = 255;
yellow.g = 255;
yellow.b = 0;
、上記のいずれかをサポートするように最小限にstruct
の宣言を変更し、デフォルトの初期化メソッドを持つ方法を教えてください。
「理想的な解決策」で呼び出すことができるので、理想的ではない - それはRGB' 'に符号なしchar''からの暗黙的な変換を定義します。 –
ありがとう、私はおそらく問題を考えすぎていました。私は問題のあるヘッダを生成するプロジェクトにバグ報告/変更要求を提出して、初期化にやさしいコンストラクタを若干作成できるかどうかを確認する必要があります。 –