我在头文件中有这样的结构:
#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完全限定的名称(例如,如果内部有多个具有相同值的枚举)我应该怎么做?
答案 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;
}