0

ドーナツという名前の型があるとします。3 つの引数、2 つの int、およびフィールドとして 2 つの整数を持つ構造体 cream を取るドーナツのコンストラクターを作成したいと思います。引数が指定されていない場合に備えて、引数のデフォルト値を設定したいと思います。では、構文はどうなるでしょうか。

Donut::Donut(int a=0, int b=0, cream car={0, 0})

                    : donutfield1(a), donutfield2(b), donutfield3(car) { }

これは動作しません...

4

2 に答える 2

2

試す

Donut::Donut(int a=0, int b=0, cream car=cream{0, 0})

(実際には、コードは C++11 準拠のコンパイラでコンパイルする必要がありますが、そうでない場合は、上記が役立つことを願っています)

于 2013-10-27T21:26:23.767 に答える
1

この構文は C++11 で導入されました (拡張初期化リストと呼ばれます)。コードが C++03 と互換性を持つようにするには、古い構文を使用します。

Donut::Donut(int a=0, int b=0, cream car = cream(0, 0)) ...

クラス (ここでは ) が単一のcreamパラメーターを持つコンストラクターを提供し、キーワードを使用しない場合、括弧や括弧を使用せずにパラメーターの型のインスタンスから構築できることに注意してください。explicitcream car = 0

于 2013-10-27T21:34:51.733 に答える