我遇到了以下代码,
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。注意:C ++不支持default-int”
我知道unlinke C,C ++不支持default-int return。但为什么它不会识别枚举返回类型。如果我使用int / void替换HANDLER_PRIORITY中的返回类型,或者如果我在类本身中定义方法,则它可以正常工作。 (内联)或将返回类型更改为Handler :: HANDLER_PRIORITY。
我在VS 2008上。
答案 0 :(得分:21)
你需要
Handler::HANDLER_PRIORITY Handler::GetPriority()
{
...
}
编辑:抱歉没看到你的帖子的其余部分。至于为什么会出现这种情况,HANDLER_PRIORTY
没有全局范围。它是Handler
的成员,不亚于任何其他成员。所以当然你必须告诉编译器它在哪里,即使用Handler::
。