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

Mat*_*sco 6 c++ warnings typedef in-class-initialization c++11

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

警告:非静态数据成员的类内初始化是C++ 11扩展[-Wc ++ 11-extensions]

这是它来自的代码部分:

typedef struct Hand {
    bool straight = false;
    bool flush = false;
    bool four = false;
    bool three = false;
    int pairs = 0;
    } Hand;
Run Code Online (Sandbox Code Playgroud)

小智 12

这不是错误,这是一个警告.它告诉您,您只能初始化以C++ 11标准开头的结构/类的非静态成员(因为它在2011年发布,因此被称为).在此之前,你没有被C++ 98正式允许(已经发布,你已经猜到了,1998年).简而言之,你所做的事情在2011年才成为合法的官方C++.你的编译器默认似乎是1998年的标准.

尝试使用-std=c++11命令行标志进行编译(假设您正在使用GCC或clang),警告应该消失.如果你正在使用不同的编译器,那么它也应该有一个标志(如果它最近足以实现C++ 11).