封装私有枚举
之前我已经在类的头文件中定义了私有的枚举类型。
private:
enum foo { a, b, c };
但是,我不想再暴露枚举的详细信息。在实现中定义枚举是否与定义类不变量类似?
const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };
我想知道这是否是正确的语法。
Previously I've defined enumerated types that are intended to be private in the header file of the class.
private:
enum foo { a, b, c };
However, I don't want the details of the enum exposed anymore. Is defining the enum in the implementation similar to defining class invariants?
const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };
I'm wondering if this the correct syntax.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
C++ 没有枚举的前向声明,因此您无法将枚举“类型”与枚举“实现”分开。
在 C++0x 中可以进行以下操作:
C++ doesn't have forward declarations of enums, so you can't separate enum "type" from enum "implementation".
The following will be possible in C++0x:
不,
enum ClassA::foo { a, b, c };
不是正确的语法。如果您想将枚举从标头移出并移至实现 (.cpp) 文件中,则只需执行此操作即可。如果你想使用枚举作为类方法的参数类型,那么你不能移动它,所以只需将其保留为私有即可。
No,
enum ClassA::foo { a, b, c };
is not correct syntax.If you want to move the enum out of the header and into the implementation (.cpp) file, then just do that. If you want to use the enum for parameter types of methods of the class, then you cannot move it, so just leave it private.