非静态数据成员初始值设定项c++; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 红色整数=255; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 绿色整数=255; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 蓝色整数=255;

非静态数据成员初始值设定项c++; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 红色整数=255; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 绿色整数=255; 非静态数据成员初始值设定项仅适用于-std=c++11或-std=gnu++11 [默认情况下启用] 蓝色整数=255;,c++,c++11,non-static,data-members,C++,C++11,Non Static,Data Members,不知道为什么这不起作用 struct color { int Red = 255; int Green = 255; int Blue = 255; }; 启用c++11或: struct Color { int Red; int Green; int Blue; Color() : Red(255), Green(255), Blue(255) {} }; 非静态数据成员初始值设定项是仅存在于C++11版本语言规范中的一项功能。默认情

不知道为什么这不起作用

struct color {
    int Red = 255;
    int Green = 255;
    int Blue = 255;
};
启用c++11或:

struct Color
{
    int Red;
    int Green;
    int Blue;
    Color() : Red(255), Green(255), Blue(255) {}
};

非静态数据成员初始值设定项是仅存在于C++11版本语言规范中的一项功能。默认情况下,您使用的编译器不能在C++11模式下工作。要将编译器切换到C++11模式,必须指定
-std=C++11
(或
-std=gnu++11
)命令行选项。这就是您的编译器告诉您的(我可以补充说,非常明确)


在C++11之前版本的语言中没有这样的特性。这就是为什么它“不起作用”。

< p>你需要启用C++ 11或添加<代码> -STD= C++ 11 标志来编译,因为你所要做的只是在C++ 11

PrimeC++11中可用,你只能初始化构造函数成员初始化列表中的非静态数据成员。在C++11中,可以使用括号或相等的初始值设定项,如代码所示。但是,如果NSDM具有大括号或相等的初始值设定项并出现在成员初始值设定项列表中,则大括号或相等的初始值设定项将被忽略。因此,以下内容适用于C++03和C++11:

struct Color
{
    int Red;
    int Green;
    int Blue;
    Color() : Red(255), Green(255), Blue(255) {}
};

但是,由于您有一个C++11就绪的编译器,请使用
-std=C++11
启用它。

我认为您应该遵循编译器的建议。当您得到答案时,您应该选择回答问题的编译器,然后单击复选标记。我看到你没有为你提出的任何问题这样做。