相关疑难解决方法(0)

从两个枚举类创建复合类型,为STL映射做好准备

我想用两个创建一个复合类型enum classes.

enum class Color {RED, GREEN, BLUE};
enum class Shape {SQUARE, CIRCLE, TRIANGLE};

class Object {
  Color color;
  Shape shape;
public:
};
Run Code Online (Sandbox Code Playgroud)

为了Object在STL容器中使用,std::map<>我需要重载less-than运算符.但是,为了将两个枚举类压缩成一个线性索引,我不知何故需要枚举类的元素数(NoE):

friend bool operator< (const Object &lhs, const Object &rhs) {
  return NoE(Shape)*lhs.color+lhs.shape < NoE(Shape)*rhs.color+rhs.shape;
}
Run Code Online (Sandbox Code Playgroud)

如果不以一种很好的方式在程序中的两个位置输入相同的信息(元素数量),怎么做呢?(好的方式意味着没有FIRST_ELEMENT, LAST_ELEMENT,预处理器魔术等)

问题(枚举中的元素数量)类似但未解决enum classes.

我想知道在C++ 11中实现这种复合类型的最佳方法是什么.枚举类定义是否足够强大,还是有必要说:?

enum class Color {RED=0, GREEN=1, BLUE=2};
enum class Shape {SQUARE=0, CIRCLE=1, TRIANGLE=2};
Run Code Online (Sandbox Code Playgroud)

c++ enums stl c++11

11
推荐指数
2
解决办法
893
查看次数

标签 统计

c++ ×1

c++11 ×1

enums ×1

stl ×1