GObject 二 簡單封裝乙個類

2021-08-29 09:35:24 字數 1756 閱讀 1742

簡單說,gobject就是乙個讓c語言實現物件導向的工具。或者是讓gobject子類化的過程

以下就是步驟:

1、在.h檔案中包含

2、在.h檔案中建立例項結構體和類結構體,以封裝乙個類。

3、在.h檔案中定義p_type_t巨集,宣告p-t-get-type函式。

4、在.c檔案中呼叫g_define_type巨集,產生型別註冊**.

例項:hw-dlist.h檔案內容

#ifndef hwdlist_h

#define hwdlist_h

#include #define hw_type_dlist (hw_dlist_get_type());

typedef struct _hwdlistnode hwdlistnode;

struct _hwdlistnode ;

typedef struce _hwdlist hwdlist;

struct _hwdlist ;

typedef struce _hwdlistclass hwdlistclass; //類結構體

struct _hwdlistclass ;

// gtype hw_dlist_get_type(void);

#endif

// 以上的例項結構體和類結構體合起來就可以成為乙個類,叫做 hwdlist類

// 當gobject的例項結構體和類結構體(即 gobject和gobjecetclass)分別是例項結構體和類結構體的第乙個成員時,表示 hwdlist類 繼承自 gobject類

hw-dlist.c檔案內容

#include "hw-dlist.h"

// 以下這個巨集相當於hw_dlist_get_type()函式,

g_define_type (hwdlist, hw_dlist, g_type_object);

// hwdlist 是這個類的名字

// hw_dlist 是這個函式的字首

// g_type_object 指明了hwdlist的父型別是 g_type_object

static void hw_dlist_init(hwdlist *self)

static void hw_dlist_class_init(hwdlistclass *class)

main.c 這裡包括了類的例項化等

/類的例項化 

//hwdlist *dlist; //類的例項化,即建立類的乙個物件

//dlist = g_object_new(hw_type_dlist,null); //物件例項化,即對類物件進行例項化,此時g_object_new()為例項分配了記憶體並初始化,例項的引用計數為1

//g_object_unref(dlist); //銷毀dlist 這個例項,例項的引用計數將減一

// 以上建立類的物件,物件的例項化,可以合併起來

//hwdlist *dlist = g_object_new(hw_type_dlist,null); //此時,計算機動態分配了記憶體,並用dlist這個指標指向這一塊記憶體區域的首位址。

#include "hw-dlist.h"

int main()

list = g_object_new(hw_type_dlist, null);

if(g_is_object(list))

return 0;

}

參考: 

乙個簡單的日誌封裝類

記錄乙個自己封裝的日誌類,不完善的地方,望指點。其中,包含寫檔案和輸出到終點,定義日誌等級,定義日誌儲存檔案時間間隔,日誌檔案個數等 並統一日誌輸出格式 檔名,方法名等資訊 import logging from logging import handlers class logger object...

乙個最簡單的類JQuery封裝

有時候在寫一些練習或者小的專案時,我們可能只想用用jquery的 選擇器,好用的hide show等等一些基礎的api,那麼我們又不想因為這麼幾個api來引入乙個jquery的js檔案,那麼自己封裝乙個最好不過了。function document function selector domobje...

乙個簡單的檔案查詢C 封裝類

平時要用到列舉系統硬碟上的檔案的機會比較多,每次幾乎都會重複那一些步驟,而且要列舉不同的檔案型別也是相當的不方便,於是簡單的封裝了乙個檔案查詢類,暫不支援多執行緒,不過 函式的使用相當的方便與簡潔 封裝的 稍後上傳csdn資源 使用這個類的示例如下 首先包含類標頭檔案 lxfilefinder.h ...