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