Non-covariance and overrides

Jacob Carlborg doob at me.com
Sun Sep 8 12:41:46 PDT 2013


On 2013-09-07 13:42, Joseph Rushton Wakeling wrote:
> On 03/09/13 08:56, Jacob Carlborg wrote:
>> class MyFakeSubclass
>> {
>>      MyBaseClass base
>>      alias base this;
>> }
>>
>> Every method not available in MyFakeSubclass will be forwarded to "base".
>>
>> http://dlang.org/class.html#AliasThis
>
> OK, but the challenge of that approach is that base has to be public,
> no? Otherwise, its methods will not be accessible outside the class
> (even if the alias is itself public).
>
> And that then allows problems inasmuch as the user could then do
> something like,
>
>      auto foo = new MyFakeSubclass;
>      foo.base.bar();
>
> ... and so bypass the alias.
>

I haven't checked if "base" can be private or not. But if that doesn't 
work try opDispatch:

http://dlang.org/operatoroverloading.html#Dispatch

You have a public opDispatch and a private "base".

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list