我经常遇到这样的情况:我们创建了一个作用于某个枚举类型的类,但后来又派生出子类,并希望在不改变基类的情况下添加更多的枚举值。
我看到了这个来自2009年的问题: Base enum class inheritance 然而,我知道在C++11、14、17中都对枚举类型进行了一些更改。这些变化中有哪些允许从基类扩展枚举类型到派生类呢?
我看到了这个来自2009年的问题: Base enum class inheritance 然而,我知道在C++11、14、17中都对枚举类型进行了一些更改。这些变化中有哪些允许从基类扩展枚举类型到派生类呢?
class Base
{
enum State {STATE_1, STATE_2, STATE_3};
};
class Derived : public Base
{
enum State {STATE_4};
};
...在这里,我们希望派生类拥有一个描述它可能存在的状态(STATE_1、STATE_2、STATE_3和STATE_4)的枚举。我们不想更改基类中的枚举,因为其他派生类可能没有能够处于STATE_4状态的能力。我们也不想创建一个新的枚举,因为我们已经在基类中有一个State的枚举。
8年后,我们仍然使用静态常量值来实现这一点吗?
class Base
{
static int STATE_1= 0;
static int STATE_2= 1;
static int STATE_3= 2;
};
class Derived : public Base
{
static int STATE_4= 3;
};
enum
在 11-14-17 版本中有很大的变化吗?我知道他们引入了强类型的enum class
,但我相信普通的enum
基本上仍然和以前一样。 - ShadowRanger