glib中gobject的創建

首先在.h文件中定義

GType aaa_bbb_get_type(void); 通常aaa表示命名空間,bbb表示對象名字


在對應的.c文件中使用宏G_DEFINE_TYPE

G_DEFINE_TYPE(AaaBbb,aaa_bbb,G_TYPE_OBJECT)

G_DEFINE_TYPE會聲明一些函數,並且實現了aaa_bbb_get_type(void),所以才需要在對應的.h中聲明aaa_bbb_get_type的函數。


G_DEFINE_TYPE會調用一個g_type_register_static_simple的函數,這個函數的作用就是將用戶自己定義的類型註冊到系統中,除此之外G_DEFINE_TYPE還定義了2個函數(aaa_bbb_init、aaa_bbb_class_init)沒有實現,需要定義對象的用戶自己去實現。這個是對象的初始化函數,相當於java中的構造函數,第一個函數在每個對象創建的時候都會被調用,第二個函數只有在第一次創建對象的時候被調用。確切的說,在調用g_type_class_ref的時候,如果class沒有初始化,就會調用aaa_bbb_class_init。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章