2011-04-08 138 views
2

我碰到下面的代码来返回从功能枚举,在C++基础类

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

    enum HANDLER_PRIORITY {PRIORITY_0, PRIORITY_1, PRIORITY_2}; 

    virtual HANDLER_PRIORITY GetPriority(); 
private: 
    HANDLER_PRIORITY m_priority; 
} 
在.cpp文件

我有这个

HANDLER_PRIORITY Handler::GetPrioity() 
{ 
    return PRIORITY_0; 
} 

我得到一个编译错误,“缺少类型说明 - int assume。注意:C++不支持default-int“我知道unlinke C,C++不支持default-int return。但为什么它不会识别枚举返回类型。如果我将HANDLER_PRIORITY的返回类型替换为int/void,或者如果我在类中定义了该方法,它会正常工作。 (内联)或将返回类型更改为Handler :: HANDLER_PRIORITY。

我在VS 2008

回答

20

你需要

Handler::HANDLER_PRIORITY Handler::GetPriority() 
{ 
... 
} 

编辑:对不起没看到您的帖子的其余部分。至于为什么是这种情况,HANDLER_PRIORTY没有全球范围。它是Handler的成员,不下于其他任何人。所以当然你必须告诉编译器它在哪里,即使用Handler::

+0

帮助我节省了这么多时间...谢谢。 – 2012-11-29 17:09:29

+0

你可以使用'return HANDLER_PRIORITY :: PRIORITY_0;'等返回一个特定的枚举 – serup 2016-12-12 10:59:13