2013-02-01 58 views
0

考慮以下幾點:枚舉返回類型不工作C [錯誤C2440]

class Specimen 
{ 
public: 
enum Gender getGender(); 
private: 
enum Gender { MALE=1, FEMALE=2, ALIEN=3, HYBRID=4}; 
} 

這部分,以及:

Gender gender; 

下私人

enum Gender Specimen::getGender() 
{ 
    return gender; 
} 

,這是一個成員函數 編譯器說 「錯誤C2440:'返回':不能從'樣本:: g安德」到‘性別’ 我還試圖從功能的def函數原型刪除‘枚舉’

我不知道我需要修復

回答

1

目前還不清楚如何以及在何處gendergetGender()聲明/定義,但以下編譯:

class Specimen 
{ 
public: 
    enum Gender { MALE=1, FEMALE=2, ALIEN=3, HYBRID=4}; 
    Gender getGender(); 
private: 
    Gender gender; 
}; 

Specimen::Gender Specimen::getGender() 
{ 
    return gender; 
} 

int main() {} 

看到它的工作here

注意enum Gender已移動的getGender()聲明之上,並且Gender被限定爲在getGender()定義Specimen::Gender

3

Specimen不在範圍內,所以你必須限定它:

enum Specimen::Gender Specimen::getGender() 
{ 
    return gender; 
} 

這工作太在C++ 11:

auto Specimen::getGender() -> Gender 
{ 
    return gender; 
} 
+0

沒有函數原型保持不變? –

+0

@ MuadDib42是的。在課堂內部使用時,「性別」在範圍內。 – Pubby