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 ライブラリの使用を避けたい場合は、int の代わりに std::pair を使用できます。次に、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::pair の配列または std::vector を使用できます。このようにして、特定の条件について、特定のインデックスのフラグを設定し、他のすべてのインデックスのフラグをリセット (false を設定) することができます。

于 2013-05-07T18:07:30.793 に答える