C++ 11スタイル(link)(00:35:30)のBjarne StroustrupのKeynoteを見ています。スライド):C++代入演算子の代わりに中括弧を使用したスコープ付き変数の宣言とインスタンス化
void f(int n, int x)
{
Gadget g {n};
// ...
if (x<100) throw std::run_time_error{"Weird!"};
if (x<200) return;
// ...
}
は、私は、オブジェクトと同様の構造体を使用してこのコードをコンパイルするが、両方のケースでは、コンパイラはそれが期待されていることを私に伝えてみました「;」 Gadget g
の宣言の最後にはコンパイルされません。
私の質問は、したがって、以下のとおりです。私はg
がインスタンス化されていることを前提とする修正
- アム?
Gadget
このコードをコンパイルするには、どのタイプのオブジェクトが必要ですか?- この行のコンセプトは何ですか:
Gadget g {n};
?すなわち、宣言の後の中括弧は何ですか? - (広すぎるかもしれませんが)なぜコンパイラは中括弧を有効な構文として認識しませんか?
これはC++ 11の構文です。関連するコンパイラのサポートが必要です。 – juanchopanza
C++ 11に準拠したコンパイラを使用して、 '-std = C++ 11'または' -std = C++ 0x'フラグ –