在使用qt的時候,程式設計風格都是基於c++的,現在要實現乙個定時器的功能,即:當事件a發生,開啟定時器,以固定時間計時。當定時器時間到了之後,在觸發事件b中關閉定時器。在這期間,有可能a事件又發生一次,則計時器重新計時。這個功能可以用到具有檢測功能的需求中。如:a事件為需要連續重複執行的事件,但需要檢測當a事件在執行一次之後,如果在規定時間內沒有執行事件a,則執行事件c。
實現方法:
使用qt庫中的qtimer功能實現,很容易就實現了,只不過需要將自定義的類繼承自qobject,因為只有qobject才有connect方法,才能將時間觸發與待處理事件聯絡起來。
現在不想使用qtimer,因為不需要qobject的其他功能。在linux系統下,可以使用系統的signal函式和alarm時鐘來做管理。這個方法網上也很多,現在需要解決的問題是如何在c++的類中,呼叫signal函式並且觸發自定義事件。
過程如下:
觸發事件my_fun,定義為靜態方法,並且宣告在cpp檔案開始。
原因:1.如果不是靜態方法,則類的方法無法被signal函式呼叫
2.如果定義在h標頭檔案中,則靜態方法可能會被多次引用。
在類的方法裡呼叫signal(sigalarm, my_fun),即可將時鐘與方法my_fun關聯
//-----------h標頭檔案-------------
// file name : test.h
#include
#include
#include
class test
//----------------cpp檔案---------------
// test.cpp
static void my_fun();
#include "test.h"
test::start()
void my_fun()
int main()
如此即可!
C 靜態方法 非靜態方法呼叫總結
總結的c 靜態方法 非靜態方法的呼叫,有不正確的請指正 操作靜態方法 非靜態方法 同個類中呼叫 方法名 前面不用加類名或物件名 例項化類後呼叫 即new一次 不同類中呼叫 類名.方法名 例項化類後呼叫 即new一次 新建乙個測試用的類,演示靜態方法和非靜態方法在同個類中的呼叫 class testc...
物件呼叫靜態方法 C 中靜態成員 靜態方法 靜態類
平時在用c 做開發的朋友都知道,不論是靜態成員還是靜態方法還是靜態類都是用static關鍵字來修飾。也就是說只要看到了static,那麼它後面的東西就是靜態!在c 中,靜態成員或者靜態方法是屬於類的,不是屬於物件。假如我們有乙個類myclass,需要例項化這個 類,就應該這麼做 myclass my...
靜態方法呼叫非靜態方法
靜態方法不能 直接 呼叫非靜態變數,非靜態方法可以引用靜態變數。靜態方法不屬於物件,是屬於類的,不需要例項化 而非靜態變數是屬於物件的,需要先例項化。在乙個類的靜態成員中去訪問其非靜態成員,因為類的靜態成員先於類的非靜態成員存在,訪問乙個記憶體中不存在的東西會出錯。相反,非靜態方法可以引用靜態變數。...