Inheriting from an interface twice
Denis Koroskin
2korden at gmail.com
Fri Oct 1 01:32:24 PDT 2010
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).
More information about the Digitalmars-d
mailing list