【问题标题】:returning enum from function in C++ base class从 C++ 基类中的函数返回枚举
【发布时间】:2011-04-08 21:12:58
【问题描述】:

我遇到了以下代码,

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 返回。但为什么它不能识别枚举返回类型。如果我用 int/void 替换来自 HANDLER_PRIORITY 的返回类型,或者如果我在类本身中定义方法,它工作正常。 (内联)或将返回类型更改为 Handler::HANDLER_PRIORITY。

我在 VS 2008 上。

【问题讨论】:

    标签: c++ visual-c++ enums


    【解决方案1】:

    你需要

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

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

    【讨论】:

    • 帮我节省了这么多时间...谢谢。
    • 你可以使用return HANDLER_PRIORITY::PRIORITY_0; 等等来返回一个特定的枚举
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多