【发布时间】:2014-08-15 04:03:55
【问题描述】:
我已经在一个类中声明并初始化了一个常量 char 数组:
class grid {
const char test[11] = {'s', 'e', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
我的代码有效,但我不断收到编译器警告:
非静态数据成员初始化器仅适用于 C++11
和
扩展初始化列表仅适用于 C++11
我知道这不是问题,因为我正在编译为 C++11 标准,但我很好奇我的代码在 C++11 之前是什么。
我希望有人能给我一些见解,并建议我可以做些什么来使这段 C++98 代码“友好”。
也应要求,我的编译器命令:
> g++ -o test main.cpp
【问题讨论】:
-
您是否在编译器命令行中添加了
-std=c++11? -
警告中为[默认启用]
-
要成为 C++98 的“友好”,就像你所说的那样,不要在类声明中初始化你的类数据成员;而是在类构造函数中执行此操作。
-
Enabled by default表示警告默认开启,与
-std=c++11无关。如果您启用了 C++11 模式,则不应出现此警告。 C++03 只允许在类中初始化常量整数静态数据成员。您正在使用称为非静态数据成员初始化程序的 C++11 功能。 -
您不能在 C++98 的构造函数中初始化数组。除非你调用分配给元素初始化。
标签: c++ arrays warnings initializer