Enum正向声明
Enum Forward Declaration
我正在尝试正确使用枚举的前向声明。因此,我上网搜索,但我找不到有用的东西。
我在标题中使用这个:
// Forward declaration
enum myEnumProcessState;
然后在struct中使用这个enum:
struct myStruct {
[...]
myEnumProcessState osState;
[...]
};
在另一个标头中:
enum myEnumProcessState {
eNotRunning,
eRunning
};
我发现该类型应该放在enum forward声明中才能被接受。但是,我不知道是哪种"类型"。应该是过程状态。
enum myEnumProcessState : unsigned int;
enum myEnumProcessState : String;
我想跳过forward声明,但是我的结构体哭了,因为它再也找不到它了…
所以我有点困惑。有解决办法吗?
在c++ 11之前,c++根本不支持枚举的前向声明!然而,一些编译器(如MS Visual Studio)提供了语言扩展。
如果您的编译器不支持c++ 11,请查看其文档中的enum forward声明。
如果你可以使用c++ 11,有enum class
语法(你几乎是正确的,但要注意额外的class
关键字:
// Forward declaration
enum class myEnumProcessState: unsigned int;
// Usage in a struct
struct myStruct {myEnumProcessState osState;};
// Full declaration in another header
enum class myEnumProcessState: unsigned int {
eNotRunning,
eRunning
};
// Usage of symbols (syntax may seem slightly unusual)
if (myObject.osState == myEnumProcessState::eNotRunning) {
...
}
相关文章:
- .cpp和.h文件中的模板专用化声明
- enum是C++中的宏变量还是整数变量
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 是否可以从int转换为enum类类型
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 在c++ Visual Studio 2010中尝试声明enum时出现奇怪的错误
- Visual studio 2010没有限定作用域的opaque-enum声明,省略了base
- Enum正向声明