g_hash_table_replace(table, my_struct.key, v + 1)
Однако, чтобы соответствовать вашей структуре, v должно быть guint
, а не char *
.
Но обратите внимание, что приведение, которое вы делаете, не является хорошей идеей, поскольку целые числа не гарантированно помещаются в указатели. Было бы лучше сделать что-то вроде:
typedef struct {
gchar *key;
guint *my_int;
} my_struct;
guint *v;
v = (guint*) g_hash_table_lookup(table, my_struct.key);
if (v == NULL)
{
my_struct.my_int = g_malloc(sizeof(guint));
*(my_struct.my_int) = 0;
g_hash_table_insert(table, my_struct.key, my_struct.my_int);
}
else
{
(*v)++;
g_hash_table_replace(table, my_struct.key, v) // here I'd like to do something like current_val+1
}