2011-09-19 17 views
0

私はタイマークラスを作成しました。タイマーを起動した後、20秒が経過したかどうかを知りたいのですが、そうであれば関数を呼び出したり、コードブロックを実行したりしたいと思います。そのクラスは機能しませんが、私は理由を知りません。C++タイマー問題

編集:それは私がisTimeTout(秒)は常に真を返すことを意味しません。私は数秒が経過したかどうかを確認したいと思います。それに基づいてアクションを行います。 クラスタイマ{ プライベート: 符号なしlong begTime; public: void start(){ begTime = clock(); }

 unsigned long elapsedTime() { 
      return ((unsigned long) clock() - begTime)/CLOCKS_PER_SEC; 
     } 

     bool isTimeout(unsigned long seconds) { 
      return seconds >= elapsedTime(); 
     } 
}; 
+0

このクラスは、 'isTimeout'関数を使って指定された時間が経過したかどうかを調べるために働くはずですが、それはあなたにいくつかのOS機能を使わなければならないということを自動通知しません... –

+2

うまくいかない?何が間違っているのですか? – Peter

+0

詳細を提供する必要があります。 「うまくいかない」とはどういう意味ですか?クラスをどのように使用しているかを示します。 –

答えて

1

あなたはWindows上にいるので、clock()を使うことができます。

エラーはここにある:

return seconds >= elapsedTime(); 

それは次のようになります。

return seconds <= elapsedTime(); 

あなたが今持っている何未満 20秒が経過したときtrueを返します。比較を反転すると修正されます。

3

clock()測定CPU時間は時間を壁ありません。代わりにdifftime()と一緒にtime()を使用してみてください。

+3

'clock()'はWindowsでwall-timeを測定します。質問はタグ付きのwinapiです。 – Mysticial

+0

@マイケル・バリ 例を表示してください。 –

+0

time()とdifftime()は動作するようにポーリングする必要がありますか?それは私のニーズを満たすものではありません。 –

0

上記のようにtime()とdifftime()を試してみてください。私はあまりにも前にこの問題を抱えていました:)

+1

あなたの答えがすでにここにあれば、投票してください。重複した回答を提供しないでください。 – quasiverse