我试图正确地为枚举使用前向声明。所以我在网上搜索,但找不到有用的东西。
我在标题中使用了这个:
// Forward declaration
enum myEnumProcessState;然后,我在一个结构中使用这个枚举:
struct myStruct {
[...]
myEnumProcessState osState;
[...]
};在另一个标题中:
enum myEnumProcessState {
eNotRunning,
eRunning
};我发现这种类型应该放在要被接受的前向声明中。但是,我不知道我应该将哪一种“类型”设置为流程状态。这些都不管用:
enum myEnumProcessState : unsigned int;
enum myEnumProcessState : String;我想跳过前面的声明,但是我的结构在哭,因为它找不到它了.
所以我有点困惑。有解决办法吗?
发布于 2013-02-28 19:33:13
在C++11之前,C++根本不支持枚举的前向声明!但是,一些编译器(如)为此提供了语言扩展。
如果您的编译器不支持C++11,请查看其关于枚举前向声明的文档。
如果您可以使用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) {
...
}https://stackoverflow.com/questions/15141248
复制相似问题