reimplementing an interface in a derived class
    Alex 
    sascha.orlov at gmail.com
       
    Thu Jan  3 23:44:15 UTC 2019
    
    
  
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; }
}
´´´
    
    
More information about the Digitalmars-d-learn
mailing list