列挙型の前方宣言を正しく使用しようとしています。そのため、インターネットを検索しましたが、機能するものが見つかりません。
私はヘッダーで使用しています:
// Forward declaration
enum myEnumProcessState;
次に、この列挙型を構造体で使用しています:
struct myStruct {
[...]
myEnumProcessState osState;
[...]
};
そして別のヘッダーで:
enum myEnumProcessState {
eNotRunning,
eRunning
};
受け入れられるには、型を列挙型前方宣言に入れる必要があることがわかりました。ただし、プロセス状態にどの「タイプ」を設定する必要があるのかわかりません。これらは機能しません:
enum myEnumProcessState : unsigned int;
enum myEnumProcessState : String;
前方宣言をスキップしたかったのですが、Structが見つからなくなったために泣いています...
だから私は少し混乱しています。あなたは解決策を知っていますか?
どうもありがとう :)
C++ 11より前は、C++は列挙型の前方宣言をまったくサポートしていませんでした。ただし、一部のコンパイラ(MS Visual Studioなど)は、そのための言語拡張機能を提供します。
コンパイラがC++ 11をサポートしていない場合は、列挙型前方宣言に関するドキュメントを参照してください。
C++ 11を使用できる場合は、enum class
構文(ほぼ正しく理解できましたが、追加のclass
キーワードに注意してください:
// Forward declaration
enum class myEnumProcessState: unsigned int;
// Usage in a struct
struct myStruct {myEnumProcessState osState;};
// Full declaration in another header
enum class myEnumProcessState: unsigned int {
eNotRunning,
eRunning
};
// Usage of symbols (syntax may seem slightly unusual)
if (myObject.osState == myEnumProcessState::eNotRunning) {
...
}