我正在处理一些布尔变量,我现在正在转换为布尔数组:
bool bool_var -> bool bool_var[SIZE]
这会导致容易出错的行为,因为如果之前:
if (bool_var) { ... }
可以返回“true”或“false”,同一行代码总是返回“true”,因为“bool_var”现在是指向数组的指针。这非常容易出错,特别是如果有人复制了大量变量。
所以这就是问题:是否有一种不易出错的做事方式?
我认为可以解决的解决方案:
有什么想法吗?
答案 0 :(得分:2)
由于您使用的是固定大小的数组,因此如果您的编译器中没有C ++ 11支持,则应使用std::array
或boost::array
。或者,您也可以考虑使用std::bitset
。
答案 1 :(得分:2)
如果您使用std::array
而不是普通数组:
#include <array>
std::array<bool,20> test;
bool fail = test;
给出:
test.cc:4:13: error: cannot convert 'std::array' to 'bool' in initialization