我有以下课程:
class Foo
{
public:
...
private:
int a;
int b;
int c;
int d;
int e;
int f;
}
该程序将影响其中一些变量的值,而其他变量不应该处于我程序逻辑的有效状态。处理那些不应该有值的变量的好方法是什么?我应该给他们一个随机值(例如 68823773)吗?这对我来说似乎不是一个干净的解决方案。
如果您没有“奇异”值(例如,0 或 -1)来表示特殊值,则可以使用boost::optional
如果你想避免使用 boost 库,那么你可以使用 std::pair 而不是 int。然后您可以适当地设置 bool 标志以确定有效状态。
例如:
std::pair<int, bool> value;
之后,当值具有有效状态时,您可以将标志设置如下:
value.first = <some_value>;
value.second = true;
同样,您可以重置班级中的其他成员。要检查该值是否处于有效状态,您可以使用
if (value.second)
{
// true means valid state
// Do your processing here
}
最后,您可以使用数组或 std::vector 的 std::pair 而不是一系列变量。这样,对于某些特定条件,您可以为某个索引设置标志并为所有其他索引重置(设置为假)标志。