在类中使用"枚举"时出错

shi*_*r k 1 c++ scope class declaration c++11

我收到有关我的枚举的以下错误消息,我无法弄清楚为什么.我只有1个头文件和1个源文件,我实现了所有的功能(和主要).我在"公共"中宣布了"幸存者"类中的枚举.我没有忘记在源文件中包含头文件.请帮我看看我做错了什么.

"错误:'e_status'没有命名类型"

这是我的头文件:

class Survivor
{
public:
    enum e_status {SINGLE, MARRIED, RELATIONSHIP};

    char* get_name();
    int get_age();
    e_status get_status();

    void set_name(char n[]);
    void set_age (int a);
    void set_status (e_status s);

    const void print();

private:

    char name [20];
    int age;
    e_status status;
};
Run Code Online (Sandbox Code Playgroud)

这是我的源文件中的相关部分:

e_status Survivor::get_status()
{
    return status;
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 5

您必须使用限定名称

Survivor::e_status Survivor::get_status()
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

该类型e_status是该类的成员Survivor.

在类范围中不搜索成员函数的返回类型,例如在类范围中使用参数类型.

考虑以下两个函数定义.

#include <iostream>

class Survivor
{
public:
    enum e_status {SINGLE, MARRIED, RELATIONSHIP};

    e_status get_status();
    void set_status (e_status s);
    //...
private:
    e_status status;
};

Survivor::e_status Survivor::get_status()
{
    return status;
}

void Survivor::set_status (e_status s)
{
    status = s;
}

int main() 
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 也可能:`auto Survivor :: get_status() - > e_status`.如果您想不惜一切代价避免使用限定名称,或仅用于说明,则非常有用. (2认同)