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