0
non-static data member initializers only available with -std=c++11 or -std=gnu++11 
[enabled by default]
     int Red = 255;
non-static data member initializers only available with -std=c++11 or -std=gnu++11
[enabled by default]
     int Green = 255;
non-static data member initializers only available with -std=c++11 or -std=gnu++11 
[enabled by default]
     int Blue = 255;

なぜこれが機能しないのかわかりません。

struct color {
    int Red = 255;
    int Green = 255;
    int Blue = 255;
};
4

4 に答える 4

5

c++11 を有効にするか、次のようにします。

struct Color
{
    int Red;
    int Green;
    int Blue;
    Color() : Red(255), Green(255), Blue(255) {}
};
于 2014-10-13T23:37:29.687 に答える
3

非静的データ メンバー初期化子は、言語仕様の C++11 バージョンにのみ存在する機能です。使用しているコンパイラは、デフォルトでは C++11 モードでは動作しません。コンパイラを C++11 モードに切り替えるには、-std=c++11(または-std=gnu++11) コマンドライン オプションを指定する必要があります。これは、コンパイラがあなたに伝えていることです (非常に明確に、私は追加するかもしれません)。

C++11 より前のバージョンの言語には、このような機能はありません。それが「うまくいかない」理由です。

于 2014-10-13T23:39:18.720 に答える
0

C++ 11 を有効にするか、-std=c++11フラグを追加してコンパイルする必要があります。これは、実行しようとしていることが C++11 でのみ使用できるためです。

于 2014-10-13T23:52:06.800 に答える