web-dev-qa-db-ja.com

C ++ 11拡張機能とは[-Wc ++ 11-extensions]

このエラーが発生している場所を理解するのに助けが必要です:

警告:非静的データメンバーのクラス内初期化はC++ 11拡張です[-Wc ++ 11-extensions]

これは、コードのセクションです。

typedef struct Hand {
    bool straight = false;
    bool flush = false;
    bool four = false;
    bool three = false;
    int pairs = 0;
    } Hand;
7

これはエラーではなく、警告です。これは、C++ 11標準(2011年に公開されたため、いわゆる)で始まるstruct /クラスの非静的メンバーのみを初期化することが許可されていることを示しています。それ以前は、C++ 98によって正式に許可されていませんでした(1998年に公開されたと推測しています)。要するに、あなたがやっていることは2011年に正式な公式C++になっただけです。コンパイラのデフォルトは1998年の標準のようです。

コマンドラインフラグとして-std=c++11を使用してコンパイルしてみてください(GCCまたはclangを使用している場合)、警告は表示されなくなります。別のコンパイラーを使用している場合は、そのためのフラグも必要です(C++ 11を実装するのに十分最近の場合)。

14
Razvan Cojocaru