Never mind, I found the answer in the 'templates' page of the spec:

class Super {
   T doStuff(this T)() { ...; return cast(T)this; }
}

Sub x = (new Sub()).doStuff();

It seems a bit of a shame that I need the cast, but it's a small thing :)

On 15/09/2012 22:53, Ben Davis wrote:
Hi,

Is it possible in D to achieve this effect:

class Super {
   typeof(this) doStuff() { ...; return this; }
}

class Sub : Super {
   //doStuff is NOT explicitly overridden here
}

Sub x = (new Sub()).doStuff();

The last line doesn't compile because doStuff() returns Super. Is there
a way to make it return Sub without having to explicitly override the
function?

Thanks in advance,

Ben :)

Reply via email to