如何对使用 G_DECLARE_DERIVABLE_TYPE (glib/gobject) 定义的类进行子类化
Posted
技术标签:
【中文标题】如何对使用 G_DECLARE_DERIVABLE_TYPE (glib/gobject) 定义的类进行子类化【英文标题】:How to subclass a class defined with G_DECLARE_DERIVABLE_TYPE (glib/gobject) 【发布时间】:2021-10-23 07:55:35 【问题描述】:一些颤振代码会这样做:
G_BEGIN_DECLS
G_DECLARE_DERIVABLE_TYPE(FlTextureGL, fl_texture_gl, FL, TEXTURE_GL, FlTexture)
gboolean (*populate)(FlTextureGL* texture,
uint32_t* target,
uint32_t* name,
uint32_t* width,
uint32_t* height,
GError** error);
;
我必须继承 FlTextureGL 类并定义 populate
函数。
如何继承G_DECLARE_DERIVABLE_TYPE
定义的类?如何定义方法populate
?
【问题讨论】:
【参考方案1】:您可以按照tutorial 了解如何使用 GObject 进行子类化,但简短的回答是您需要在自己的代码中使用 G_DEFINE_TYPE
系列宏。
要定义populate
方法,请在class_init
函数中设置函数指针的值:
static void
my_type_class_init (MyTypeClass *klass)
FlTextureGLClass *fl_texture_gl_class = FL_TEXTURE_GL_CLASS (klass);
fl_texture_gl_class->populate = my_type_populate;
/* ... */
【讨论】:
以上是关于如何对使用 G_DECLARE_DERIVABLE_TYPE (glib/gobject) 定义的类进行子类化的主要内容,如果未能解决你的问题,请参考以下文章