Inheriting from an interface twice

Steven Schveighoffer schveiguy at yahoo.com
Mon Oct 4 04:39:46 PDT 2010


On Fri, 01 Oct 2010 04:32:24 -0400, Denis Koroskin <2korden at gmail.com>  
wrote:

> I always thought that in D interface inheritance is always virtual, i.e.  
> you only inherit it once even if it is specified twice (or more) within  
> hierarchy.
>
> Until I got an assertion on the following test (reduced from a real  
> example):
>
> interface Foo
> {
> }
>
> class Bar : Foo
> {
> }
>
> class Baz : Bar, Foo
> {
> }
>
> void main()
> {
> 	Baz baz = new Baz();
> 	Bar bar = baz;
> 	
> 	Foo foo1 = bar;
> 	Foo foo2 = baz;
> 	
> 	assert(foo1 is foo2);
> }
>
>
> foo1 and foo2 have the same type and point to the same object. Yet they  
> have different addresses. Is it a bug, or a feature?
>
> The test above passes for C# (http://ideone.com/xK5Mu) and C++  
> (http://ideone.com/MnnL8 virtual inheritance used, fails otherwise, of  
> course).

I agree, I think you should file a bug on this.

-Steve


More information about the Digitalmars-d mailing list