首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Enum前进宣言

Enum前进宣言
EN

Stack Overflow用户
提问于 2013-02-28 16:56:58
回答 1查看 30.6K关注 0票数 10

我试图正确地为枚举使用前向声明。所以我在网上搜索,但找不到有用的东西。

我在标题中使用了这个:

代码语言:javascript
复制
// Forward declaration
enum myEnumProcessState;

然后,我在一个结构中使用这个枚举:

代码语言:javascript
复制
struct myStruct {
    [...]
    myEnumProcessState osState;
    [...]
};

在另一个标题中:

代码语言:javascript
复制
enum myEnumProcessState {
    eNotRunning,
    eRunning
};

我发现这种类型应该放在要被接受的前向声明中。但是,我不知道我应该将哪一种“类型”设置为流程状态。这些都不管用:

代码语言:javascript
复制
enum myEnumProcessState : unsigned int;
enum myEnumProcessState : String;

我想跳过前面的声明,但是我的结构在哭,因为它找不到它了.

所以我有点困惑。有解决办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-28 19:33:13

在C++11之前,C++根本不支持枚举的前向声明!但是,一些编译器(如)为此提供了语言扩展。

如果您的编译器不支持C++11,请查看其关于枚举前向声明的文档。

如果您可以使用C++11,则有enum class语法(您几乎正确地理解了它,但请注意附加的class关键字:

代码语言:javascript
复制
// 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) {
    ...
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15141248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档