2017-11-27 21 views
-2

このコードをデバッグする方法が難しくなってきています。私が知る限り、このコードはすでに真であり、男性は性別の中の0の位置にあるので、0を出力するはずです。構造体内の列挙型

#include <bits/stdc++.h> 

using namespace std; 

struct Employee{ 
    int number; 
    enum gender{Male,Female}; 
    enum language{English,Mandarin}; 
    enum experience{onetofiveyears,fivetotenyears}; 
}personality; 

int main(){ 
    personality.gender d = Male; 
    cout << d; 
} 

これを修正する方法についてはわかりません。私はあなたが私がすでにいくつかの研究をしたために助けてくれることを願っており、うまくいきませんでした。ご協力ありがとうございました。

+1

コンパイルは行いますか? –

+1

'Employee :: gender'型(スタンドアロンの性別)の' d'型を作成しようとしていますか、またはperonalityの性別にアクセスしようとしていますか? –

+0

'#include ' - いいえ、いいえ、いいえ。 *しないでください。 –

答えて

1

スコープの解像度を使用して列挙を参照する必要があります。

Employee::gender d = Employee::gender::Male; 
std::cout << d; 
+0

::とドット(。)の違いは何ですか?はい、私は::を使用すると警告が表示されますが、ドット(。)を使用するとエラーになります。 – truthprogrammer99

+0

なぜ私はドット(。)を使用しても動作しません?? – truthprogrammer99

+0

'.'はオブジェクトのメンバーを参照します。オブジェクト内の列挙宣言自体はメンバーではありません。列挙のメンバインスタンスを作成し、 '.'で参照することができます。 [詳細情報](https://stackoverflow.com/questions/4984600/when-do-i-use-a-dot-arrow-or-double-colon-to-refer-to-members-of-a-class -in-c) – lcs

関連する問題