如何转发声明枚举?

时间:2020-06-12 16:23:28

标签: c++

我们是否必须在使用枚举器之前声明枚举类?

如果不是,我们如何转发声明的枚举?

以下程序导致编译错误

#include <iostream>
enum class Color;

int main()
{
    Color c = Color::Green;
}

enum class Color
{
  Red,
  Green,
};

编译器:

1>------ Build started: Project: Project1, Configuration: Debug x64 ------
1>Project1.cpp
1>C:\Users\Admin\source\repos2\Project1\Project1.cpp(6,19): error C2027: use of undefined type 'Color'
1>C:\Users\Admin\source\repos2\Project1\Project1.cpp(2): message : see declaration of 'Color'
1>C:\Users\Admin\source\repos2\Project1\Project1.cpp(6,24): error C2065: 'Green': undeclared identifier
1>Done building project "Project1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

1 个答案:

答案 0 :(得分:1)

您正在这样做:

不透明枚举声明:定义枚举类型,但不定义其枚举数:在此声明之后,该类型是完整类型且其大小已知。

读取枚举 https://en.cppreference.com/w/cpp/language/enum