枚举返回类型不起作用[错误C2440]

时间:2013-02-01 04:50:26

标签: c++ enums return

请考虑以下事项:

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:'返回':无法从'标本::性别'转换为'性别' 我也尝试从函数def和函数原型中删除“枚举”

我不确定我需要修复什么

2 个答案:

答案 0 :(得分:3)

Specimen不在范围内,因此您必须符合条件:

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

这在C ++ 11中也有效:

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

答案 1 :(得分: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()声明之上,而GenderSpecimen::Gender定义中被视为getGender()