C++ 封装私有枚举

C++ 封装私有枚举,c++,enums,C++,Enums,前面我定义了枚举类型,这些类型在类的头文件中是私有的 private: enum foo { a, b, c }; 但是,我不想再公开枚举的详细信息。在实现中定义枚举与定义类不变量类似吗 const int ClassA::bar = 3; enum ClassA::foo { a, b, c }; 我想知道这是否是正确的语法。C++没有枚举的前向声明,因此不能将枚举“类型”与枚举“实现”分开 在C++0x中可以执行以下操作: // foo.h class foo { enum b

前面我定义了枚举类型,这些类型在类的头文件中是私有的

private:
  enum foo { a, b, c };
但是,我不想再公开枚举的详细信息。在实现中定义枚举与定义类不变量类似吗

const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };

我想知道这是否是正确的语法。

C++没有枚举的前向声明,因此不能将枚举“类型”与枚举“实现”分开

在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

否,
enumclassa::foo{a,b,c}的语法不正确

如果您想将枚举从标头中移出并移动到实现(.cpp)文件中,那么只需这样做。如果要对类的方法的参数类型使用枚举,则无法移动它,因此只需将其保留为私有