I struggled some time ago with doing object inheritance at more than one level, like: Glib::Object -> MyObjectA (w/ some properties for example) -> MyObjectB (w/ additional properties and/or overriden [virtual] functions) While the gtkmm says about using "inheritance" I couldn't solve the problem the way I expect from a C++ library. So, unless I'm mistaken somewhere, it *almost* is impossible. At that time I did some hard stuff to overcome that problem (with implications on how you write your objects) but now I'm getting in even bigger problems, when instead of starting from Glib::Object I start from some other C++ wrapper, like, for example, Clutter::Group -> MyObjectA -> MyObjectB
This is really annoying since I want to use C++ w/ the various wrappers in more then a simplistic GUI wrapper and with one level of inheritance :-( So far the problems that I think I saw: a) it seems that the glibmm::object* source files (or at least some ObjectBase constructors) are assuming derived objects are mostly C++ wrappers or one level deeper b) (from memory) saw some strange things about declaring the wrapper's type as being the C actual type instead of the just created type ? I think there was also a comment like "allow g_peek_class..." to work !? c) wrappers around methods want to "peek" at the original C object to call some functions for example, and are assuming current object has its parent type the C object, which, in case it runs on object MyObjectB, it is a wrong assumption. Can't the wrapping code gkmmproc is building, try, since it really knows (or could) the C type, work directly on that type (w/ g_peek_class...) instead of relying on the actual object instance type being derived directly from the C type? d) I also saw some comments about skiping some virtual function calls. I wonder: 1) what's the optimization they're talking about? (haven't checked sources enough) 2) (would have to check) - can they also be a source of problems for the thing I want to have fixed? Anyway, I might be mistaken, and if there is a method to accomplish what I said in the beginning that I want, I'd be glad to hear it! Thanks.
_______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtkmm-list