スポンサーリンク

| キーワード:

C++ 勝手にfalseになるboolを作る

今日は仕事でこんなクラスを作った。

 

class BOOLatOnce{
private:
    bool flag;
public:
    BOOLatOnce(){
        flag = false;
    }
    explicit BOOLatOnce(const bool b){flag = b;}
    BOOLatOnce& operator=(const bool b){flag = b;return *this;}
    operator bool(){
        //評価が行われたら自動でfalseに戻す。
        bool b = flag;
        flag = false;
        return b;
    }
};

こいつの使い方は簡単。

BOOLatOnce bat;

 bat = true; // bat == true

if( bat ){  // ifの中はtrue

    // ここではすでにbat == false

    /* ... */

}

普通のboolと違い、一度評価されたら勝手にfalseに戻る

ソースコードが食中毒にかかったかのようにスマートになること請け合いだ。

 

後でメンテナンスする人間(一月後の自分含む)が困惑する様子が目に浮かぶ。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: