作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我遇到了以下代码,
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++ 不支持默认 int”
我知道unlinke C,C++不支持default-int return。但为什么它不能识别枚举返回类型。如果我用 int/void 替换 HANDLER_PRIORITY 的返回类型,或者如果我在类本身中定义方法,它就可以正常工作。 (内联)或将返回类型更改为 Handler::HANDLER_PRIORITY。
我在 VS 2008 上。
最佳答案
你需要
Handler::HANDLER_PRIORITY Handler::GetPriority()
{
...
}
编辑:抱歉没有看到您帖子的其余部分。至于为什么会这样,HANDLER_PRIORTY
没有全局作用域。它是 Handler
的成员,不亚于任何其他成员。所以当然你必须告诉编译器它在哪里,即使用 Handler::
。
关于c++ - 从 C++ 基类中的函数返回枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5600827/
我是一名优秀的程序员,十分优秀!