以前我已经定义了枚举类型,这些类型在类的头文件中是私有的。
private:
enum foo { a, b, c };
但是,我不想再露出枚举的细节了。在实现中定义枚举类似于定义类不变量吗?
const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };
我想知道这是否是正确的语法。
答案 0 :(得分:9)
C ++没有枚举的前向声明,因此您无法将枚举“type”与枚举“implementation”分开。
以下内容可以在C ++ 0x中使用:
// foo.h
class foo {
enum bar : int; // must specify base type
bar x; // can use the type itself, members still inaccessible
};
// foo.cpp
enum foo::bar : int { baz }; // specify members
答案 1 :(得分:2)
不,enum ClassA::foo { a, b, c };
语法不正确。
如果要将枚举移出标题并进入实现(.cpp)文件,那么就这样做。如果你想使用enum作为类的方法的参数类型,那么你就不能移动它,所以只需将它保密。