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

发布于 2024-10-31 03:52:31 字数 596 浏览 0 评论 0原文

我遇到了以下代码,

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”

我知道取消链接 C、C++ 不支持默认-int 返回。但为什么它不能识别枚举返回类型。如果我用 int/ void 替换 HANDLER_PRIORITY 的返回类型,或者如果我在类本身中定义该方法,它就可以正常工作。 (内联)或将返回类型更改为 Handler::HANDLER_PRIORITY。

我用的是VS 2008。

I came across the following code,

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

    enum HANDLER_PRIORITY {PRIORITY_0, PRIORITY_1, PRIORITY_2};

    virtual HANDLER_PRIORITY GetPriority();
private:
    HANDLER_PRIORITY m_priority;
}

in the .cpp file I have this

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

I get a compilation error, "missing type specifier - int assumed. Note: C++ does not support default-int"

I know that unlinke C, C++ does not support default-int return. but why would it not recognize an enum return type. It works fine if I replace return type from HANDLER_PRIORITY with int/ void, OR if I define the method in the class itself. (inline) OR change the return type to Handler::HANDLER_PRIORITY.

I am on VS 2008.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝梦月影 2024-11-07 03:52:32

您需要

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

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

You need

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

Edit: Sorry didn't see the rest of your post. As for why this is the case, HANDLER_PRIORTY doesn't have global scope. It's a member of Handler no less than any other. So of course you have to tell the compiler where it is, i.e. use Handler::.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文