0

考虑以下:

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:'return':无法从'Specimen :: gender'转换为'Gender'我还尝试从函数def和函数原型中删除“枚举”

我不确定我需要修复什么

4

2 回答 2

3

Specimen不在范围内,因此您必须对其进行限定:

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

这也适用于 C++11:

auto Specimen::getGender() -> Gender
{
    return gender;
}
于 2013-02-01T05:00:59.670 回答
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() {}

看到它在这里工作。

请注意,它enum Gender已移至getGender()声明上方,并且在定义中Gender被限定。Specimen::GendergetGender()

于 2013-02-01T05:00:59.180 回答