请参阅结构中的枚举

时间:2016-07-28 21:27:10

标签: c++ enums

我在头文件中有这样的结构:

#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

然后我收到错误:

    <ToggleSwitch Name="MyToggle"
                  IsOn="{x:Bind myVM.useCustomSound, Mode=TwoWay}" />
                  IsEnabled="{x:Bind myVM.myToggleEnabled, Mode=OneWay}" />

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

2 个答案:

答案 0 :(得分:4)

使用范围运算符:

MessageA::Status::eReady;

另请注意,在C ++ 11之前,枚举标签没有作用域,在这种情况下,您将使用以下代码:

MessageA::eReady;

答案 1 :(得分:1)

;放在struct

的末尾
struct MessageA {
   enum Status {
      eReady, eNotReady 
   };
};

然后使用enum元素,如下图:

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

    return 0;
}