On Thursday, 3 January 2019 at 23:23:12 UTC, Neia Neutuladh wrote:
On Thu, 03 Jan 2019 22:30:48 +0000, kdevel wrote:
class A : D {
     int foo() { return 1; }
}

class B : A, D {
[...]

What is the meaning of the ", D"? It does not seem to make a difference if it is omitted.

B must provide its own implementation of D. It can't simply use A's implementation.

I assume that is another bug and has nothing to do with interfaces...

´´´
import std.traits;

alias parentOfB = BaseClassesTuple!B[0];

void main()
{
        static assert(is(typeof(cast(parentOfB)(new B)) == parentOfB));
        assert((cast(parentOfB)(new B)).foo == (new parentOfB).foo);
}

class A
{
        int foo() { return 1; }
}

class B : A
{
    override int foo() { return 2; }
}
´´´

Reply via email to