1

我有以下课程:

class Foo
{
public:
    ...
private:
    int a;
    int b;
    int c;
    int d;
    int e;
    int f;
}

该程序将影响其中一些变量的值,而其他变量不应该处于我程序逻辑的有效状态。处理那些不应该有值的变量的好方法是什么?我应该给他们一个随机值(例如 68823773)吗?这对我来说似乎不是一个干净的解决方案。

4

2 回答 2

4

如果您没有“奇异”值(例如,0 或 -1)来表示特殊值,则可以使用boost::optional

于 2013-05-07T16:44:37.807 回答
0

如果你想避免使用 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 而不是一系列变量。这样,对于某些特定条件,您可以为某个索引设置标志并为所有其他索引重置(设置为假)标志。

于 2013-05-07T18:07:30.793 回答