Inheritance of purity

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri Feb 17 08:17:21 PST 2012


Agreed. Timon, could you please submit to bugzilla?

BTW I referred to the converse problem:

class C {
   void foo() {}
   void foo() const {}
}

class D : C {
   void foo() const {} // should only override the const overload
}


Andrei

On 2/17/12 8:00 AM, kenji hara wrote:
> I think this is a current implementation problem.
>
> In this case, just `override void foo()` in class D should override
> the method in C.
> And `void foo()const` should be a new overlodad of foo.
>
> Kenji Hara
>
> 2012/2/17 Timon Gehr<timon.gehr at gmx.ch>:
>> On 02/17/2012 02:33 PM, Timon Gehr wrote:
>>>
>>>
>>> Introducing a new overload against const in a subclass is illegal:
>>>
>>> class C{
>>>      void foo(){}
>>> }
>>> class D : C{
>>>      override void foo(){}
>>>      override void foo()const{}
>>> }
>>>
>>> Error: D.foo multiple overrides of same function
>>
>>
>> Oops...
>>
>> I meant
>>
>>
>> class C{
>>     void foo(){}
>> }
>>
>> class D:C{
>>     override void foo(){}
>>     void foo()const{}
>> }
>>
>> The error message is the same though.



More information about the Digitalmars-d mailing list