2011-08-10 41 views
0
enum ENU{YES=0,NO,DONTKNOW}; 

void func(ENU e) 
{ 
    int n; 
    cout<<"1+1="; 
    cin >> n; 
    if(n==2) 
    cout<<e.YES; 
    else 
    cout<<e.NO; 
    if(ischar(n)) 
    cout<<e.DONTKNOW; 
} 

總是顯示錯誤。因爲我的節目太小而且形成不良。我無法正確使枚舉工作

+7

總是顯示什麼錯誤? – Bart

+0

什麼錯誤?什麼是「ischar」? –

+0

謝謝,我只是想知道誰關心我的帖子。我不會再發布。謝謝。 – Dalton

回答

1

你可能想是這樣的:

enum ENU {YES=0,NO,DONTKNOW}; 
    void func() 
    { 
     int n; 
     cout<<"1+1="; 
     cin >> n; 

     if(ischar(n)) 
     cout<< DONTKNOW; 
     else if(n==2) 
     cout<< YES; 
     else 
     cout<< NO; 
    } 

在你的例子中,將參數ENU傳遞給func()是毫無意義的。 此外,您必須首先測試ischar(),以避免在沒有必要時輸入其他兩個測試中的任何一個。 請注意,輸出您的枚舉值與「cout < < YES;」例如,不會向控制檯寫入「YES」,而只會寫入其數值「0」。

並演示如何使用枚舉好一點的版本:

void func() 
{ 
    int n; 
    cout<<"1+1="; 
    cin >> n; 
    ENU e = YES; 

    if(ischar(n)) 
    e = DONTKNOW; 
    else if(n==2) 
    e = YES; 
    else 
    e = NO; 

    cout << e << endl; 
} 

備註:ischar()可能無法正常工作,你所期望的,因爲你不給它一個字符代碼。

+0

由於沒有明確初始化'n'並且輸入流可能不包含整數,因此'ischar(n)'的結果未定義。也就是說,你應該明確地將'n'初始化爲一個已知值。 – ildjarn

+0

@ildjarn:_Potentially_ undefined。 –

5
cout<<e.YES; 
cout<<e.NO; 

e是一個變量。當你做e.YES你試圖描述YESe的成員;這是not correct。我想你想要

cout<<YES; 
cout<<NO; 
3

你使用枚舉是錯誤的!你不能寫e.YES,你必須以這種方式給變量'e'賦值YES:e = YES,然後你可以顯示它。 和顯示器將是錯誤的,COUT將顯示它作爲int值,這樣是將顯示爲0和NO將顯示爲1

+0

太遲....:P –