在C++中使用布尔数组减少错误

reducing errors using boolean arrays in C++

本文关键字:数组 错误 布尔 C++      更新时间:2023-10-16

我正在处理许多布尔变量,现在我正在将这些变量转换为布尔数组:

bool bool_var -> bool bool_var[SIZE]

这会导致容易出错的行为,因为如果之前:

if (bool_var) { ... }

可以同时返回"true"或"false",因为"bool_var"现在是指向数组的指针,所以同一行代码总是返回"true)。这很容易出错,尤其是在复制大量变量的情况下。

所以问题来了:有没有一种不太容易出错的做事方式?

我认为可行的解决方案:

  1. 用强类型枚举替换布尔类型(在C++03中开销很大)
  2. 某些编译器指令触发警告(我找不到..)

有什么想法吗?

由于使用固定大小的数组,因此如果编译器中不支持C++11,则应使用std::arrayboost::array。或者,您也可以考虑使用std::bitset

如果您有std::array,请使用它而不是普通数组:

#include <array>
std::array<bool,20> test;
bool fail = test;

提供:

test.cc:4:13:错误:初始化时无法将"std::array"转换为"bool"