【问题标题】:How to subclass a class defined with G_DECLARE_DERIVABLE_TYPE (glib/gobject)如何对使用 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

【问题讨论】:

    标签: c gtk glib gobject


    【解决方案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;
    
      /* ... */
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2011-01-04
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多