作用域 Pre C++11 的最佳替代方案
Best alternative for scoped Pre C++11
我想在我的代码中的几个地方开始使用枚举,但我对编译器以前的声明有问题。枚举当前如何声明对我来说最有意义:
避免这种情况的最佳方法是什么?
enum score_methods_t {NONE,ABS_FROM_PERFECT,ERROR_SQUARED};
enum scale_methods_t {NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};
我应该让所有内容都唯一,还是使用命名空间的作用域?我想在类中使用枚举类型,而 NONE 是最具描述性的名称!
枚举冲突的原因也是因为本质上 thay 只是在引擎盖下 #defines??
在 C++11 之前,我使用了:
struct score_methods { enum type { NONE, ABS_FROM_PERFECT, ERROR_SQUARED }; };
这意味着您始终具有实际enum
类型的score_methods::type
和值的score_methods::NONE
等。
另外,不,它们不仅仅是#define
,因为您可以将它们放入不同的命名空间或类中(如上所示(,这是预处理器无法执行/处理的操作。
您始终可以将枚举放在类中:
struct Score
{
enum Method { None, AbsFromPerfect, ErrorSquared };
};
用法:
void foo(Score::Method m);
foo(Score::None);
我发现当我使用按位无作用域枚举时,我获得了自动转换为 int 的好处,同时仍然能够引用位,例如,IoType::输入给定:
enum IoType
{
Indeterminable = 0,
Input = 1,
Output = 2,
IOput = Input|Output,
};
相关文章:
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 解决难题(最佳解决方案)
- 比较/搜索数组中多个整数的最佳解决方案
- 找出迷宫求解器的最佳解决方案,并具有动画输出
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- CPLEX 如何以相同的成本获得所有不同的最佳解决方案
- 我该如何判断k-server动态解决方案的最佳路径以数组成本[i] [j] [k] [t]位于何处
- 我在这里滥用继承权吗?什么是最佳实践替代方案/模式?
- 暂停和恢复线程的最佳解决方案是什么?
- std::optional 的最佳替代方案是从方法返回可选值?(使用 C++98/C++11/C++14)
- 作用域 Pre C++11 的最佳替代方案
- 需要包含运行任务时间的 2D 矩阵的最佳解决方案
- 什么是python dictionary和zip的最佳C++替代方案
- 清除一个字符数组的最佳方案-是否为memset
- 为什么通过系统("color YX")更改控制台应用程序中C++颜色不是最佳解决方案?
- 查找内存泄漏的最佳解决方案
- 在c++中绘制(原语,线条等)的最佳通用跨平台解决方案
- 黑客攻击线程安全是"最佳"行动方案吗?
- LTO优化负面影响并找到最佳解决方案