首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >枚举:它们可以在.h中执行,还是必须留在.cpp中?

枚举:它们可以在.h中执行,还是必须留在.cpp中?
EN

Stack Overflow用户
提问于 2009-08-16 15:25:00
回答 5查看 50.3K关注 0票数 39

如果我有类似这样的东西:

enum
{
    kCP_AboutBox_IconViewID = 1,
    kCP_AboutBox_AppNameViewID = 2,
    kCP_AboutBox_VersionViewID = 3,
    kCP_AboutBox_DescriptionViewID = 4,
    kCP_AboutBox_CopyrightViewID = 5
};

在我的.cpp中,它可以在.h中使用吗?

更重要的是,除了类定义、变量等之外,您还可以在.h中放入哪些其他较少了解的内容

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-16 15:49:27

.h文件本质上就是代码,它在编译时放在包含它的任何.cpp (或.h文件)之上。因此,您只需将.cpp文件中的任何代码放入.h中,它就应该可以很好地编译。

然而,重要的是设计。如果需要将代码暴露给包含.h文件的代码,则应该将代码(例如枚举)放在.h文件中。但是,如果枚举仅特定于头的.cpp实现中的代码,则应该只将其封装在.cpp文件中。

票数 56
EN

Stack Overflow用户

发布于 2009-08-16 15:28:11

是的,您的枚举定义可以放在头文件(.h)中。不过,不要在.cpp文件中重复定义。

票数 9
EN

Stack Overflow用户

发布于 2009-08-18 04:17:48

通常,枚举将用作类型定义,并且应该始终位于头文件中。需要考虑的是它的范围。

如果枚举只是放在头文件中的任何作用域之外,那么它将全局地可用于包括头文件的任何事物。如果您希望枚举仅供类本身访问,则可以将其放在类的私有部分。

通常,您不应该将枚举设置为全局作用域,而应该将其放入名称空间或类的公共部分。然后,您就可以通过

NamespaceOrClass::EnumValue

另外,作为附注,枚举会自动迭代您给出的第一个值(或0)。

enum
{
    kCP_AboutBox_IconViewID = 1,
    kCP_AboutBox_AppNameViewID = 2,
    kCP_AboutBox_VersionViewID = 3,
    kCP_AboutBox_DescriptionViewID = 4,
    kCP_AboutBox_CopyrightViewID = 5
};

完全相同于

enum
{
    kCP_AboutBox_IconViewID = 1,
    kCP_AboutBox_AppNameViewID,
    kCP_AboutBox_VersionViewID,
    kCP_AboutBox_DescriptionViewID,
    kCP_AboutBox_CopyrightViewID
};

这不是问题或错误,只是风格上的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1284529

复制
相关文章

相似问题

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