Re: [Vala] Interfaces - why do they must have prerequisites?



Hello,
                في ن، 06-12-2010 عند 01:25 +0100 ، كتب Aleksander Wabik:
As classes not inheriting from Object have different ref and unref
functions (Foo will have foo_ref, and foo_unref, Bar will have bar_ref
and bar_unref), if an object is referenced by the reference of interface
type, there's no possibility to ref and unref this object unless
knowing what ref and unref functions to use! This may be the cause why
creating references of interface type fails, and passing interface type
references to functions do not fail (there's no ref then).
Yes, that's exactly the problem.

This is a serious flaw to the object system IMO. It means, that there's
*no way* of having two classes that do not have common ancestor but
implement the same interface. Possible ways to solve this problem:
What's exactly your problem with having common ancestor? AFAIK, every
type system out there requires all of your objects (whether they
implement an interface or not) to have a common ancestor. So why Vala's
"all objects implementing a given interface must have a common ancestor"
a problem?

And it's recommended to always inherit from GLib.Object unless the
performance gain is real (you're creating really many objects), and even
then creating a light base class for your app's classes to inherit from
wouldn't have much more overhead than implementing an interface in the
first place.

HTH,
Abderrahim




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]