从C++基类中的函数返回枚举

Vin*_*ink 2 c++ enums visual-c++

我遇到了以下代码,

class Handler
{
public:
   Handler() {}
   ~Handler() {}

    enum HANDLER_PRIORITY {PRIORITY_0, PRIORITY_1, PRIORITY_2};

    virtual HANDLER_PRIORITY GetPriority();
private:
    HANDLER_PRIORITY m_priority;
}
Run Code Online (Sandbox Code Playgroud)

在.cpp文件中我有这个

HANDLER_PRIORITY Handler::GetPrioity()
{
   return PRIORITY_0;
}
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误,"缺少类型说明符 - 假设int.注意:C++不支持default-int"

我知道unlinke C,C++不支持default-int return.但为什么它不会识别枚举返回类型.如果我使用int/void替换HANDLER_PRIORITY中的返回类型,或者如果我在类本身中定义方法,则它可以正常工作.(内联)或将返回类型更改为Handler :: HANDLER_PRIORITY.

我在VS 2008.

Mat*_*ips 21

你需要

Handler::HANDLER_PRIORITY Handler::GetPriority()
{
...
}
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉没看到你的帖子的其余部分.至于为什么会这样,HANDLER_PRIORTY没有全球范围.它是一个Handler不亚于任何其他成员.所以当然你必须告诉编译器它在哪里,即使用Handler::.