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と関数プロトタイプから「enums」を削除してみました

何を修正する必要があるのか​​わかりません

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

genderandがどのように、どこで宣言/定義されているかは不明ですgetGender()が、次のようにコンパイルされます。

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()GenderSpecimen::GendergetGender()

于 2013-02-01T05:00:59.180 に答える