Class knowing its own Class
Justin Spahr-Summers
Justin.SpahrSummers at gmail.com
Wed Jun 30 21:55:33 PDT 2010
On Wed, 30 Jun 2010 22:59:50 +0200, Tomek Sowinski <just at ask.me> wrote:
>
> Dnia 30-06-2010 o 00:13:28 strtr <strtr at sp.am> napisal(a):
>
> > == Quote from Steven Schveighoffer (schveiguy at yahoo.com)'s article
> >> On Tue, 29 Jun 2010 17:59:37 -0400, strtr <strtr at sp.am> wrote:
> >> > What is the pretty way to do something like this?
> >> >
> >> > Class C
> >> > {
> >> > void makeNew()
> >> > {
> >> > new typeof(this);
> >> > }
> >> > }
> >> As edited...
> >> -Steve
> >
> > Whahaha!
> > Thanks, I knew I was missing something here.
>
> Interestingly, this works even if makeNew is static (as factory methods
> usually are). Don't know whether by design or by bug. If by the latter,
> please don't fix it ;)
>
>
> Tomek
Yep, it's intentional. It's explained in a rather hard-to-find spot:
"There are three special cases:
1. typeof(this) will generate the type of what this would be in a non-
static member function, even if not in a member function.
2. Analogously, typeof(super) will generate the type of what super
would be in a non-static member function.
3. typeof(return) will, when inside a function scope, give the return
type of that function."
http://www.digitalmars.com/d/2.0/declaration.html#Typeof
More information about the Digitalmars-d-learn
mailing list