c++ - 什么是 C++11 扩展 [-Wc++11-extensions]

标签 c++ c++11 warnings typedef in-class-initialization

我需要一些帮助来了解此错误发生的位置:

warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]

这是它来自的代码部分:

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

最佳答案

这不是错误,这是警告。它告诉您,您只能初始化以 C++11 标准(之所以这样称呼是因为它于 2011 年发布)开始的结构/类的非静态成员。在此之前,C++98 并未正式允许您这样做(您猜对了,它于 1998 年发布)。长话短说,您所做的事情在 2011 年才成为合法的官方 C++。您的编译器的默认设置似乎是 1998 年的标准。

尝试使用 -std=c++11 作为命令行标志进行编译(假设您使用的是 GCC 或 clang),警告应该会消失。如果您使用的是不同的编译器,那么也应该有一个标志(如果它足够新以实现 C++11)。

关于c++ - 什么是 C++11 扩展 [-Wc++11-extensions],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45291142/

相关文章:

c++ - 带有非类型参数的奇怪模板实例化错误

r - 生成警告消息 : In `...` : invalid factor level, NA

javascript - "target element is not a descendant of root"是什么意思?

Mysql 在 INSERT 查询中截断了不正确的 DOUBLE 值

C++ 指向派生类对象的基类指针不调用派生等于运算符函数

c++ - 在 Qt 中将 x 可执行文件作为按钮事件运行时出错

c++ - 用 boost spirit 解析一对整数

gtkmm按钮的c++构造函数未定义错误

c++ - 在运行时确定对象类型的最佳方法

c++ - 在 C++ 中将指针数组的所有元素设置为 nullptr