引用结构内部的枚举
Refer to an enum inside a struct
我在头文件中定义了这样一个结构:
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;
}
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- 如何在公共头文件中向库的用户公开枚举,同时在内部使用它?
- 如何理解c++中在命名空间内部定义的枚举类型enum
- 在模板类内部定义的枚举上的嵌套类的部分专用化
- C++ 如何访问内部枚举类?
- c 如何从类类 .h 文件内部识别.cpp中的 UDT 枚举
- 访问在 C++ 函数内部的结构中定义的枚举类属性
- 在类内部的结构中定义枚举
- 枚举在内部作为整数实现.那为什么会给出错误
- C++:使用"enum class"的类内部的枚举
- 内部作用域枚举、哈希函数和无序集数据成员
- 在类外部使用在类内部声明的类型定义枚举
- 类不能包含内部定义枚举的操作符函数
- c++:在类内部从外部声明枚举器,以便可以在私有成员中使用
- 如何从内部枚举中获得外部类名
- 引用结构内部的枚举