【发布时间】:2012-03-12 15:16:33
【问题描述】:
我正在处理一些布尔变量,现在我将它们转换为布尔数组:
bool bool_var -> bool bool_var[SIZE]
这会导致容易出错的行为,因为如果以前:
if (bool_var) { ... }
可以返回“true”或“false”,同一行代码总是返回“true”,因为“bool_var”现在是指向数组的指针。这很容易出错,尤其是在复制大量变量时。
那么问题来了:有没有更不容易出错的做事方式?
我认为可行的解决方案:
- 用强类型枚举替换布尔类型(C++03 中的开销很大)。
- 一些编译器指令触发警告(我找不到......)。
有什么想法吗?
【问题讨论】:
-
@PlasmaHH:
std::vector<bool>应该小心处理,这是一个有一些陷阱的专业化。 -
@PlasmaHH,很遗憾 - 此应用程序不允许使用 std::vector。
-
@BjörnPollex:是的,它/可以/是一个专业化,但似乎没有一个可能的陷阱与他的问题有关。
标签: c++ enums boolean strong-typing