在C++中使用布尔数组减少错误
reducing errors using boolean arrays in C++
我正在处理许多布尔变量,现在我正在将这些变量转换为布尔数组:
bool bool_var -> bool bool_var[SIZE]
这会导致容易出错的行为,因为如果之前:
if (bool_var) { ... }
可以同时返回"true"或"false",因为"bool_var"现在是指向数组的指针,所以同一行代码总是返回"true)。这很容易出错,尤其是在复制大量变量的情况下。
所以问题来了:有没有一种不太容易出错的做事方式?
我认为可行的解决方案:
- 用强类型枚举替换布尔类型(在C++03中开销很大)
- 某些编译器指令触发警告(我找不到..)
有什么想法吗?
由于使用固定大小的数组,因此如果编译器中不支持C++11,则应使用std::array
或boost::array
。或者,您也可以考虑使用std::bitset
。
如果您有std::array
,请使用它而不是普通数组:
#include <array>
std::array<bool,20> test;
bool fail = test;
提供:
test.cc:4:13:错误:初始化时无法将"std::array"转换为"bool"
相关文章:
- 类动态数组错误
- 如何返回多维数组?错误C2440
- 数组错误(不允许类型不完整)
- C++ 将文件读取到数组错误:'operator>>'不匹配
- 不断增加的指针数组 错误:赋值中的类型不兼容
- 从文本文件读取 2D 数组错误
- 动态结构数组错误
- 旋转数组 - 错误
- 按字母顺序排序名称,数组错误
- 因为每个循环都读取数组错误
- 二维数组错误
- C 获取数组错误
- 编译时出现字符串数组错误
- c++2维指针类数组错误(使用openframework)
- C++数组错误
- C++上数组错误的大小
- C++数组错误:访问冲突读取位置0xC0000005
- c++2D数组错误
- C++:为“char [4]”数组错误获取太多初始值设定项
- 分段错误(核心转储)排序字符串数组错误