gpt4 book ai didi

c++ - 关于在 C++ 中扩展枚举

转载 作者:行者123 更新时间:2023-11-30 01:58:38 24 4
gpt4 key购买 nike

假设我有一个基类,它有一个返回其实例状态的方法:

enum STATE {ALIVE, DEAD}

class BASE{
virtual STATE doThingsAndReturnStatus() {...};
}

现在我有了我的派生类,它可能有额外的状态,例如半死不活。在我看来,很难使接口(interface)保持一致,除非我需要为每个派生类全局添加一个 STATE。 (即,将新项目添加到 class BASE 中的 STATE 定义中)。我的问题是如何在不触及基类或包含它的文件的情况下实现派生类的这种类型的扩展。)

没有必要只限制对“枚举”的讨论。

我在这里找到了一个相关的线程。但它不符合我的需求:

Extending enums in C++?

最佳答案

您可以将 enum 替换为 intstringfloat 或类似的东西。

但是,这也可能不是一个好主意。假设我们可以扩展 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com