2011-09-19 53 views
0

我寫了一個計時器類。啓動定時器後,我想知道是否已經過了20秒,如果是,我想調用一個函數或執行一段代碼。那個班不行,但我不知道爲什麼。C++計時器問題

編輯:由於它不工作我的意思是isTimeTout(秒)總是返回true;我只想看看是否已經過了幾秒鐘,並基於此做一個動作。 class timer { private: unsigned long begTime; (){ 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(); 

你現在所擁有的是什麼將返回true小於20秒已過。翻轉比較應該修復它。

3

clock()措施的CPU時間不掛鍾時間。改爲使用time()以及difftime()

+3

'clock()'測量Windows中的牆壁時間。這個問題被標記爲winapi。 – Mysticial

+0

@michael burr 您能舉個例子嗎? –

+0

時間()和difftime()應該輪詢工作嗎?這並不能滿足我的需求。 –

0

嘗試使用time()和difftime(),如上所述。我以前太:)

+1

如果你的答案已經在這裏,就投票吧。不要提供重複的答案。 – quasiverse