GCC elaborated-type-specifier for a scoped enum must not use the 'class' keyword beheben

English Deutsch

Problem:

In C++ deklarieren Sie eine enum class wie folgt:

enum_class_warning.txt
enum class Shape : uint8_t {
    Circle = 0,
    Square = 1
};

aber wenn Sie versuchen, das Projekt zu kompilieren, sehen Sie eine Fehlermeldung wie

enum_class_warning_output.txt
include/Shape.hpp:4:6: warning: elaborated-type-specifier for a scoped enum must not use the 'class' keyword
 enum class Shape : uint8_t {
 ~~~~ ^~~~~
    -----

Lösung

Das Problem hier ist, dass Sie die enum class von einem anderen Typ ableiten – uint8_t in diesem Beispiel – aber dieser Typ wurde nicht deklariert.

Die Lösung besteht darin, den Header zu #includen, in dem der Typ deklariert ist, von dem die enum class erbt.

In unserem Beispiel – für den Typ uint8_t und für viele andere ganzzahlige Typen wie int32_t – können Sie dies tun, indem Sie

include_cstdint.cpp
#include <cstdint>

vor der enum class-Deklaration hinzufügen.


Check out similar posts by category: C/C++, GCC Errors