私はこのコードを持っていますが、これは正常に機能しています:
WebKit::WebView web;
// later:
{
Glib::RefPtr<WebKit::WebSettings> settings = WebKit::WebSettings::create();
// do some stuff to the object
web.set_settings(settings);
}
後で、web
まだスコープ内にあるがスコープ外になっている場合はsettings
、次のようにします。
Glib::RefPtr<WebKit::WebSettings> settings = web.get_settings();
これにより、上記で作成した元の設定オブジェクトが復元されます。ただし、実際に発生するのは、次の出力でGlib::wrap_auto
(から呼び出された)でSIGSEGVを取得することです。get_settings
GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed
私の仮定では、最初のsettings
ポインターがスコープから外れると、別のオブジェクトのプロパティに割り当てられているにもかかわらず、基になるオブジェクトが破壊されたと考えられます。なぜそれが起こっているのですか?おそらく私は上記で何か間違ったことをしているのでしょうが、コードは私には正気のようです。(オブジェクトをプロパティに割り当てると、Cオブジェクトの参照カウントが増えると思います。)