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

时间:2017-07-24 22:35:43

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

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

  

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

这是它来自的代码部分:

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

1 个答案:

答案 0 :(得分:7)

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

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