C++ 具有某些属性的类的概念,这些属性在逻辑上无法定义
我有以下课程:C++ 具有某些属性的类的概念,这些属性在逻辑上无法定义,c++,class,C++,Class,我有以下课程: class Foo { public: ... private: int a; int b; int c; int d; int e; int f; } 程序将影响其中一些变量的值,其他变量不应处于程序逻辑的有效状态。处理那些不应该有值的变量的好方法是什么?我应该给他们一个随机值比如68823773吗?对我来说,这似乎不是一个干净的解决方案。如果没有单数值,如0或-1表示特殊值,则可以使用如果没有单数值,如0或-1表示特殊
class Foo
{
public:
...
private:
int a;
int b;
int c;
int d;
int e;
int f;
}
程序将影响其中一些变量的值,其他变量不应处于程序逻辑的有效状态。处理那些不应该有值的变量的好方法是什么?我应该给他们一个随机值比如68823773吗?对我来说,这似乎不是一个干净的解决方案。如果没有单数值,如0或-1表示特殊值,则可以使用如果没有单数值,如0或-1表示特殊值,如果要避免使用boost库,可以使用,然后可以使用std::pair而不是int。然后可以适当设置bool标志以确定有效状态 例如:
std::pair<int, bool> value;
最后,您可以使用std::pair的数组或std::vector,而不是一系列变量。这样,对于某些特定条件,可以为某些索引设置标志,并为所有其他索引重置set false标志 如果要避免使用boost库,则可以使用std::pair而不是int。然后可以适当设置bool标志以确定有效状态 例如:
std::pair<int, bool> value;
最后,您可以使用std::pair的数组或std::vector,而不是一系列变量。这样,对于某些特定条件,可以为某些索引设置标志,并为所有其他索引重置set false标志 如果你的程序没有使用零,你可以使用它。或者,您可以添加一个bool,说明相应的变量是否正在使用。一个替代方法是使用boost::optional。如果您不将这些值用于任何常规用途,您可以将未使用的变量设置为std::numeric_limits::max或std::numeric_limits::min。如果您的程序不使用零,则可以使用该值。或者,您可以添加一个bool,说明相应的变量是否正在使用。一个替代方法是使用boost::optional。如果您不将这些值用于任何常规用途,您可以将未使用的变量设置为std::numeric_limits::max或std::numeric_limits::min。
if (value.second)
{
// true means valid state
// Do your processing here
}