Inheritance of purity

Timon Gehr timon.gehr at gmx.ch
Sat Feb 25 13:25:47 PST 2012


On 02/25/2012 10:28 PM, deadalnix wrote:
> Le 25/02/2012 21:44, Walter Bright a écrit :
>> On 2/25/2012 9:53 AM, deadalnix wrote:
>>> And suddenly, the override doesn't override the same thing anymore.
>>> Which is
>>> unnacceptable.
>>
>> class A {
>> void fun() const { }
>> void fun() { }
>> }
>>
>> class B : A {
>> override void fun() { }
>> }
>>
>> ----
>>
>> dmd -c foo
>> foo.d(6): Error: class foo.B use of foo.A.fun() hidden by B is deprecated
>
> So, how do someone override the non const version of the function but
> not the const version ?

By explicitly stating that he is aware of all the overloads:

class B : A {
     alias A.fun fun;
     override void fun() {  }
}

Alternatively:

class B : A{
     override void fun()const{super.fun();}
     override void fun() {  }
}


More information about the Digitalmars-d mailing list