cannot I override and mark it as private?

Steven Schveighoffer schveiguy at gmail.com
Thu May 13 01:00:43 UTC 2021


On 5/12/21 5:55 PM, Basile B. wrote:
> On Wednesday, 12 May 2021 at 19:35:31 UTC, Jack wrote:
>> I'd to change the visibility of a method overrided from public to 
>> private but it doesn't work tho to protected it does. Why is that?
>> ...
>> Why is that? why must I leave it accessible somehow (even if it's 
>> protected) to all derived class of my derived class?
> 
> See specs : https://dlang.org/spec/attribute.html#visibility_attributes
> 
>> Symbols with private visibility can only be accessed from within the 
>> same module. Private member functions are implicitly final and cannot 
>> be overridden.
> 
> 

This is (slightly) different, as he's not overriding private member 
functions. He's overriding public functions, and marking them as private.

I think the issue is more that private functions are not allowed to be 
in the vtable (which is not exactly what the text says).

Besides, it would be weird to mark a public function private in a 
derived type. All that is required is to cast to the base class and then 
you can call it.

I swear I read a bug that discusses this exact issue...

-Steve


More information about the Digitalmars-d-learn mailing list