首页 > 解决方案 > Gobject 的函数 G_TYPE_INSTANCE_GET_PRIVATE 已弃用

问题描述

我想构建 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))

标签: gtk3dbusgobject

解决方案


文档中G_ADD_PRIVATE有一个示例。


推荐阅读