gpt4 book ai didi

c++ - 作用域枚举的最佳替代方案 - Pre C++11

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:11 24 4
gpt4 key购买 nike

我想在我的代码中的几个地方开始使用枚举,但我对编译器之前的声明有疑问。目前枚举的声明方式对我来说最有意义:

避免这种情况的最佳方法是什么?

enum score_methods_t {NONE,ABS_FROM_PERFECT,ERROR_SQUARED};
enum scale_methods_t {NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};

我应该让所有东西都独一无二,还是让命名空间成为范围?我想在类中使用枚举类型,NONE 是最具描述性的名称!

枚举冲突的另一个原因是因为本质上它们只是引擎盖下的#defines??

最佳答案

在 pre-C++11 时代,我使用:

struct score_methods { enum type { NONE, ABS_FROM_PERFECT, ERROR_SQUARED }; };

这意味着您总是有 score_methods::type 用于实际的 enum 类型和 score_methods::NONE 等值。

此外,不,它们不仅仅是 #define,因为您可以将它们放入不同的命名空间或类中(如上所示),这是预处理器无法执行/处理的事情。

关于c++ - 作用域枚举的最佳替代方案 - Pre C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19284255/

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