假设我创建了一个enum,但最终有人想向该enum添加项,该怎么办?例:
// blah.hpp
enum PizzaDressing {
DRESSING_OLIVES = 0,
DRESSING_CHEESE = 1
};
在我的FunkyPizza课上,可能会有胡椒配料。
那么我如何在不明显修改原始枚举的情况下添加辣椒呢?
谢谢。
这是最接近你想要的:基枚举类继承
由于枚举在编译器中通常被处理为int的某种大小,因此您所要做的就是稍后使
enum PizzaDressing
{
Olives = 0,
Cheese = 1,
Pepperoni = 2
};
或者允许计数
enum PizzaDressing
{
Olives = 0,
Cheese = 1,
Pepperoni
};
如果由于某种原因这两种方法都不能接受,您可以使用math (Cheese + 1
)。几乎可以用任何处理数值的方法来处理枚举。
我认为在另一个枚举器中使用枚举是合法的语法,但我从未尝试过。这可以工作,但有点难看:
enum PizzaDressing
{
Olives = 0,
Cheese = 1
};
enum OtherPizzaDressings
{
Start = (OtherPizzaDressings)PizzaDressing::Cheese;
Pepperoni
};
这就是所谓的"动态enum"。据我所知,c++中没有这样的东西。但是,由于我们使用的是c++而不是C,您可以这样做:
#include <string>
#include <map>
std::map<std::string, int> myMap;
myMap["DRESSING_OLIVES"] = 0;
myMap["DRESSING_CHEESE"] = 1;
myMap["PEPPER_TOPPING"] = 2;
不能动态修改enum,因为它只定义在编译时解析的新类型。它们是程序员的助记符,在编译时它们被翻译成数字。
也就是说,您可以使用原始enum未使用的任何数字来表示您想要的任何内容:
PizzaDressing a;
a = (PizzaDressing)5;