引用结构内部的枚举

Refer to an enum inside a struct

本文关键字:枚举 内部 结构 引用      更新时间:2023-10-16

我在头文件中定义了这样一个结构:

struct MessageA {
   enum Status {
      eReady, eNotReady 
   };
};

稍后,当我尝试使用这个枚举时:

#include <MessageA.hh>
...
if( status != MessageA.Status.eReady ) continue;

我得到错误:

expected primary-expression before '.' token
'Status' has not been declared

我尝试了以下方法,结果成功了:

if( status != MessageA::eReady ) continue;

但是,如果使用:

if( status != MessageA::Status::eReady ) continue;

然后我得到错误:

   Status is not a class or a namespace

如果我需要指定完全限定的枚举的名称(例如,如果有多个枚举内部具有相同的值),我应该怎么做?

使用作用域运算符:

MessageA::Status::eReady;

还要注意,在C++11之前,枚举的标签没有确定范围,在这种情况下,您将使用以下代码:

MessageA::eReady;

;置于struct:的末尾

struct MessageA {
   enum Status {
      eReady, eNotReady 
   };
};

然后使用enum元素,如以下内容:

int main()
{
    if (MessageA::Status::eNotReady == 0)
        printf("ok");
    return 0;
}