Gobject 的函数 G_TYPE_INSTANCE_GET_PRIVATE 已弃用

Posted

技术标签:

【中文标题】Gobject 的函数 G_TYPE_INSTANCE_GET_PRIVATE 已弃用【英文标题】:Gobject's function G_TYPE_INSTANCE_GET_PRIVATE is deprecated 【发布时间】:2021-11-30 08:14:29 【问题描述】:

我想建立 dbusmenu 库,但我不能,因为标题中的函数已被弃用。所有程序员都应该改用 G_ADD_PRIVATE。当然我找到了解决方法,但我想修复代码(这是一个用于 Debian、MATE 等的库)

我假设我不能替换宏,这太容易了,而且没有意义:).. 那么,有没有人可以为我提供一个如何在 GObjects 中使用 G_ADD_PRIVATE 的示例?谢谢

这是已弃用代码的示例:

static void
dbusmenu_defaults_init (DbusmenuDefaults *self)

    self->priv = DBUSMENU_DEFAULTS_GET_PRIVATE(self);

    self->priv->types = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)g_hash_table_destroy);

在哪里

#define DBUSMENU_DEFAULTS_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), DBUSMENU_TYPE_DEFAULTS, DbusmenuDefaultsPrivate))

【问题讨论】:

【参考方案1】:

the documentation for G_ADD_PRIVATE 中有一个例子。

【讨论】:

以上是关于Gobject 的函数 G_TYPE_INSTANCE_GET_PRIVATE 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

Gobject的对象方法

如何在python中正确关闭gobject主循环?

GLib 和 GObject 到底是啥?

gobject-2.0-0 无法在 macbook 上加载

Vala 可以在没有 GObject 的情况下使用吗?

如何停止 dbus gobject 循环