2013-02-01 85 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