枚举对象名称
Enumerations object name
#include <iostream>
using namespace std;
enum color {
black=1, blue, green, cyan, red, purple, yellow, white
} colors;
int main(){
color mycolor;
mycolor = blue;
cout << mycolor;
return 0;
}
对象名称的颜色有什么用途吗?我能不能用枚举法打印出这些颜色的名称或者我只能打印出每种颜色对应的常数?
对象名称的颜色有什么用途吗?
是:如果你想要一个color
类型的全局变量,你可以在enum color
声明之后定义它。
我是否可以通过枚举来打印出这些颜色的名称或者我只能打印出每种颜色对应的常数?
不,如果给定枚举值,您将无法打印enum
成员的名称,除非您在自己的代码中构建一个系统,通过该系统您可以将常量"解码"回字符串表示。一种常见的方法是创建一个字符串字面值的并行数组:
#define TO_STR(X) #X
const char* color_names = {"none", TO_STR(black), TO_STR(blue), TO_STR(green), ...};
如你所见,不能将枚举转换为字符串并不适用于编译时已知的枚举常量:你可以使用预处理器技巧将它们字符串化。
将枚举值映射到字符串的另一种常见方法是使用std::map<color,std::string>
。不过,它类似于并行数组,因为您需要手动初始化它。对于"标志"枚举,即不使用顺序值的枚举,它的效果要好得多。
相关文章:
- C++ 使用枚举类对象分配 std::map 值
- 将枚举传递到不同文件中的对象中
- 枚举 QQmlEngine 中的所有对象
- 如何在V8中为C 本机对象实现属性枚举器
- 从对象访问结构枚举
- 如何使用枚举元素创建对象
- 如何在 c++ 中使用枚举参数实例化对象
- 虚拟方法返回代表派生对象类型的枚举 - 是否可以(在设计方面)
- 对象、枚举类型和范围的问题
- 无法获取库上的枚举(未定义的引用静态元对象)
- Qt、枚举和元对象编译器
- 构造构造函数采用单个枚举参数的临时对象时出错
- C++ dynamic_cast vs 将对象类型存储在静态枚举中
- gtest枚举和对象之间的比较
- 在C++中创建一个具有随机枚举类型的Card对象
- 通过模板模板参数使用枚举标记对象
- 枚举<T>所有 T 的所有 SomeClass 对象
- 枚举对象名称
- 成员对象中枚举的行为
- 赋给c++中对象类项的枚举值