以前我已經定義了在類的頭文件中專用的枚舉類型。封裝私有枚舉
private:
enum foo { a, b, c };
但是,我不希望暴露的枚舉的細節了。在類定義類不變量的過程中定義枚舉?
const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };
我想知道這是否正確的語法。
以前我已經定義了在類的頭文件中專用的枚舉類型。封裝私有枚舉
private:
enum foo { a, b, c };
但是,我不希望暴露的枚舉的細節了。在類定義類不變量的過程中定義枚舉?
const int ClassA::bar = 3;
enum ClassA::foo { a, b, c };
我想知道這是否正確的語法。
C++沒有枚舉的前向聲明,所以你不能將enum「type」與enum「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
沒有,enum ClassA::foo { a, b, c };
是不正確的語法。
如果您想將枚舉移出標頭並移入執行文件(.cpp),那麼就這樣做。如果你想使用枚舉類的參數類型的方法,那麼你不能移動它,所以把它保密。