1
enum bool
{
    FALSE = 0,
    TRUE = 1
};

これを最新の C++ アプローチに変換する方法と、それに適したコンテナーがあるかどうか疑問に思っています。enumそれほど高く評価されていないことは知っていますが、C++ の世界で実際の代替手段について考えることができません。

特定のメソッドの実行を状態に関連付けたい場合はどうすればよいでしょうか?


わかりました、これは私がより冗長になる部分です。

TRUE と FALSE についてではなく、構造体の記号定数について質問しているという事実を強調したいと思います。私はそれほど「困窮している」わけではありません。

独自の定数でいくつかの状態を表すことができる構造があるとします

enum semaphore
{
    GREEN = 0,
    ORANGE = 1,
    RED = 2
};

これは C コードです。より良い方法があれば、C++ で同じことを行う方法について質問があります。

状態の変化が発生したときに自動トリガーのようなことを行う可能性について尋ねると、私の質問は続きます。次に例を示します。

int main
{
   ...
   semaphore = 1;
   ...
}

method()セマフォがオレンジ色になったという理由だけで、余分なステートメントがなければ、これをトリガーする必要があります。

それが今より明確になることを願っています。

4

2 に答える 2

1

特定のメソッドの実行を状態に関連付けたい場合はどうなりますか?

私はあなたの主張を理解するかどうかはわかりませんが、多分あなたはこのようなことを意味します:

意味

これの代わりに:

enum BOOL
{
  FALSE = 0,
  TRUE = 1
};

void executeOnlyWithTrue(BOOL b)
{
  if (b == TRUE)
  {
    RunParticularMethodOnlyNeededForTrueState();
  }
}

これをして:

class BOOL
{
public:
  virtual void  executeOnlyWithTrue() const {/*default does nothing*/} 
};

class FALSE : public BOOL
{  //no override, so using default executeOnlyWithTrue (BOOL's) 
};

class TRUE : public BOOL
{
public:
  virtual void  executeOnlyWithTrue() const
  {
    RunParticularMethodOnlyNeededForTrueState();
  }
};

利用方法

これの代わりに:

const BOOL b = TRUE;
...
executeOnlyWithTrue(b)
...

これをして:

const BOOL& b = TRUE();
b.executeOnlyWithTrue();
于 2012-09-04T21:37:05.010 に答える
1

semaphoreがクラスタイプの場合、割り当ては次のとおりです。

semaphore = 5;

関数が存在する場合は自動的に呼び出しますsemaphore.operator=(int)。したがって、この関数を実装することで、の「変更」を監視できsemaphoreます(何も変更する必要はありませんが、驚き最小の原則に違反する可能性があります)。

于 2012-09-04T21:39:32.837 に答える