From: Masao M. <mu...@hi...> - 2007-07-15 13:57:39
|
むとうです。 On Sun, 15 Jul 2007 15:57:51 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > 酒井です。 > > Ruby/GTKをGTK+-2.2環境で動作確認をしていたのですが、 > > Gdk::GC.newで、"abstract class"というTypeErrorが > > 出てインスタンスが生成できないことがわかりました。 > > #このエラーはgobj_s_allocate()が出します。 > > とはいえ、このままだとGdk::GC.newを生成できないので、 > > glib/src/rbgobj_object.cに以下の関数を追加しました。 > > > > void rbgobj_abstract_but_create_instance_class(gtype); > > > > ここで登録しておいたクラスはG_TYPE_FLAG_ABSTRACTであっても > > allocateできるようになります。 > > > > とりあえず、Ruby-GNOME-0.3はこれで行きたいと思いますが、 > > 別の良案があれば教えてください。 > > これなのですが、rbgobj_abstract_but_create_instance_class は廃止して、 > とりあえず常に allocate 出来るようにしようかと思います。 > > というのも、rbgobj_abstract_but_create_instance_class で指定する方式だ > と、gtk側の実装(≠仕様)が変わるたびに対応が必要になってしまうためです。 それって、AbstractなクラスであってもFoo.newができる、ということでしょうか。 だとしたら現状のまま(Abstractなクラスはnewできない)の方が良いような気がします。 gtk側の実装が変わるたびに従わなければいけない、というのはしょうが ないといえばしょうがないわけですし。 そうでないとしたら、allocateできるようになっても構わないと思います。 -- .:% Masao Mutoh<mu...@hi...> |