首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同类型的类成员,每个枚举变量一个

不同类型的类成员,每个枚举变量一个
EN

Stack Overflow用户
提问于 2015-06-19 06:14:34
回答 2查看 51关注 0票数 1

我有一个这样的枚举:

代码语言:javascript
复制
enum Field {
    Foo,
    Bar,
    Baz,
    // 50 more follow
}

我希望将某些数据类型与每个值(Foo - uint、Bar - string等)相关联,并希望为与此枚举关联的类型的每个枚举值创建一个带有字段的类。我还希望有一个通用的getter/setter,它允许对一组字段进行原子操作。

有没有一种方法可以做到这一切,以一种通用的方式--避免为每个字段使用专门的方法,但保留我想要的所有类型安全?如果是,该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 06:47:40

老实说,如果你要这样做,你可能会想要用两种方式来做:

1)新建一个类。

如果您要在公共类之间共享50个左右的字段,那么您不妨创建一个公共类或结构来保存数据。

2)使用std::map<variant/enum, value>

对我来说,如果您真的想以牺牲性能为代价来创建一个灵活的系统,那么您可以使用std::map/std::unordered_map实现一个键/值系统。Boost.Variant有一个很好的实现,允许各种变体类型充当更高级的枚举。如果您使用它作为键,则可以确保映射将只具有枚举数量的类型,并且仍然保持类型安全。只需注意这样做会带来的问题。

票数 0
EN

Stack Overflow用户

发布于 2015-06-19 07:24:23

我不知道有任何纯C++解决方案可以满足您的所有需求。由于缺乏类型安全性,运行时强制转换不适合您,同时也没有办法(AFAIK)在编译时迭代枚举,并且为每个项生成一个类成员。即使有一些非常复杂的基于模板的方法,在我看来,编写一些可以从枚举中生成C++代码的脚本将会更简单、更灵活地实现您想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30926727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档