gpt4 book ai didi

c++ - 覆盖派生类中的枚举值

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

我有一个 A 类,它使用了一些像这样的枚举:

enum DataType
{
First,
Second,
Third
}

并且连续地为它们分配了一些在代码中使用的值。

现在,我必须编写另一个与 A 类 非常相似的 class B,我打算为其创建一个 class Parent code> 并从中派生出 class Aclass B。但是,我想在两个类中重用 enum DataType

问题是,对于 class Aclass B,这些 enum 值应该不同。

对于 A 类

enum DataType
{
First = 1,
Second = 2 ...
}

对于 B 类

enum DataType
{
First = 18,
Second = 19 ...
}

想到的一个天真的方法是在两个类中定义一个虚函数,有一个 switch case,所以我必须调用虚函数而不是使用枚举,并使用什么它返回。

但是,有更好的方法吗?通过使用一些我不知道的继承属性?

最佳答案

一个简单的解决方案是在每个成员中定义一个enum DataType。这不会引入运行时或存储开销。但在这种情况下,行为是静态的;用户只能基于静态类型访问枚举。如果枚举值遵循与您的示例中类似的模式,您可能能够使用模板生成枚举,甚至整个类。

您建议使用动态方法:使用虚函数。这有一点开销,但提供了运行时多态性。在这种情况下,用户可以在不知道该类型是什么的情况下访问特定于动态类型的枚举。

这两种方法甚至可以结合使用,这样您就可以同时拥有这两种方法。

关于c++ - 覆盖派生类中的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57059366/

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