2017-11-01 10 views
0

GObject型を持ち、GObject型のプロパティを持っています。GObject:プロパティをデフォルト値にリセットする方法は?

g_object_set (G_OBJECT (my_object), "my-property", my_value_for_property, NULL); 

プロパティをデフォルト値にリセットするにはどうすればよいですか?おそらく、この行は、直感的なようだ:

g_object_set_property (G_OBJECT (my_object), "my-property", NULL); 

しかし、私は、デフォルト値のOB「私の財産は」非NULLポインタである場合は異議を唱える何?そして、とにかくこの線は機能しません。私がちょうどあなたが(基本的に、クラスのプロパティの定義)プロパティのGParamSpecg_object_class_find_property()を使用して取得する必要がありますg_object_set_property()

答えて

3

にNULLを渡すことはできませんし、g_param_spec_get_default_value()を使用して、そのデフォルト値を取得するようです。

次のようなものは動作するはずです:

GParamSpec *pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (my_object), "my-property"); 
const GValue *default_value = g_param_spec_get_default_value (pspec); 
g_object_set_property (my_object, "my-property", default_value); 
+0

GObjectのは非常にユーザーフレンドリー:-)のようです – krokoziabla

関連する問題