Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 具有某些属性的类的概念,这些属性在逻辑上无法定义_C++_Class - Fatal编程技术网

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
}