假设我有一个基类,它有一个返回其实例状态的方法:
enum STATE {ALIVE, DEAD}
class BASE{
virtual STATE doThingsAndReturnStatus() {...};
}
现在我有了我的派生类,它可能有额外的状态,例如半死不活
。在我看来,很难使接口(interface)保持一致,除非我需要为每个派生类全局添加一个 STATE。 (即,将新项目添加到 class BASE
中的 STATE
定义中)。我的问题是如何在不触及基类或包含它的文件的情况下实现派生类的这种类型的扩展。)
没有必要只限制对“枚举”的讨论。
我在这里找到了一个相关的线程。但它不符合我的需求:
最佳答案
您可以将 enum
替换为 int
或 string
或 float
或类似的东西。
但是,这也可能不是一个好主意。假设我们可以扩展 enum
[在具有此功能的 C++ 的虚构版本中],因为 getMyStatus
是一个虚函数,它被设计为从通用代码调用不知道派生类的细节。所以如果你写这样的东西:
for(iter : baseClassContainter)
{
status = iter->getMyStatus();
switch(status)
{
case DEAD:
... do some stuff here.
break;
case ALIVE:
..... do some stuff here ...
}
}
这段代码应该如何处理“HALFDEAD”?它甚至不知道这样一个值的存在,因为[在我们支持这个的想象语言中]它只存在于派生类中......
关于c++ - 关于在 C++ 中扩展枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17156426/