17

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

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

这是它来自的代码部分:

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

1 回答 1

30

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

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

于 2017-07-25T00:20:01.033 回答