On Tue, 2010-06-15 at 14:50 -0700, Robert Powell wrote:
> On Sat, Jun 12, 2010 at 7:03 AM, tecywiz121 <tecywiz...@hotmail.com>
> wrote:
>         Hey,
> 
> Hey!
>  
> 
>         
>         The following code won't compile unless I create a flush() in
>         Concrete,
>         but I can't seem to access Entity.flush() at all, any way
>         around this
>         that doesn't involve making Entity a class?
>         public interface Flushable : Object
>         {
>            public abstract void flush();
>         }
>         
>         public interface Entity : Object, Flushable
>         {
>            public virtual void flush()
>            {
>                // Do Something
>            }
>         }
>         
> 
> 
> What are you trying to accomplish by having both Flushable and Entity?
> I think you are trying to create different mixin implementations of
> Flushable, which seems like a perfectly reasonable thing to do.

I am trying to have a type hierarchy like so

Flushable
    | \
    |  \
 Entity \
    |    \
    |     FlushableNonEntity
 SomeObj

Where SomeObj's implementation of Flush comes from entity, but
FlushableNonEntity's does not.

> You can access Entity.flush by casting this to an Entity.  I think
> you'll find that when you refer to the object you will receive GObject
> warnings about cannot add interface type 'Entity'.  Even without the
> name collision of flush, this GObject warning will still occur.

Wouldn't the following code (not sure, haven't tried) just recurse
infinitely?

public object Bob : Object, Flushable, Entity
{
    public void flush()
    {
        ((Entity)this).flush();
    }
}

> Deriving interfaces from interfaces is definitely broken.  You might
> want to submit a bug.

Actually in my other interfaces, it works fine.  I'm just not sure if
I'm allowed to override a method declared in Flushable in Entity.

> Hope that helps,
> 
> Rob

It kinda does, thanks

Sam


_______________________________________________
vala-list mailing list
vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to