digitalmars.D.learn - Class knowing its own Class
- strtr (9/9) Jun 29 2010 What is the pretty way to do something like this?
- Steven Schveighoffer (3/11) Jun 29 2010 As edited...
- strtr (3/15) Jun 29 2010 Whahaha!
- =?iso-8859-2?B?VG9tZWsgU293afFza2k=?= (7/22) Jun 30 2010 Interestingly, this works even if makeNew is static (as factory methods ...
- Justin Spahr-Summers (10/36) Jun 30 2010 Yep, it's intentional. It's explained in a rather hard-to-find spot:
What is the pretty way to do something like this? Class C { private const char[] _name = "C";// demangling this.mangleof didn't work void makeNew() { mixin(`new `~_name~`();`); // the not so pretty part } }
Jun 29 2010
On Tue, 29 Jun 2010 17:59:37 -0400, strtr <strtr sp.am> wrote:What is the pretty way to do something like this? Class C { void makeNew() { new typeof(this); } }As edited... -Steve
Jun 29 2010
== Quote from Steven Schveighoffer (schveiguy yahoo.com)'s articleOn Tue, 29 Jun 2010 17:59:37 -0400, strtr <strtr sp.am> wrote:Whahaha! Thanks, I knew I was missing something here.What is the pretty way to do something like this? Class C { void makeNew() { new typeof(this); } }As edited... -Steve
Jun 29 2010
Dnia 30-06-2010 o 00:13:28 strtr <strtr sp.am> napisa=B3(a):=3D=3D Quote from Steven Schveighoffer (schveiguy yahoo.com)'s article=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 ;) TomekOn Tue, 29 Jun 2010 17:59:37 -0400, strtr <strtr sp.am> wrote:Whahaha! Thanks, I knew I was missing something here.What is the pretty way to do something like this? Class C { void makeNew() { new typeof(this); } }As edited... -Steve
Jun 30 2010
On Wed, 30 Jun 2010 22:59:50 +0200, Tomek Sowinski <just ask.me> wrote:Dnia 30-06-2010 o 00:13:28 strtr <strtr sp.am> napisal(a):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== Quote from Steven Schveighoffer (schveiguy yahoo.com)'s articleInterestingly, 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 ;) TomekOn Tue, 29 Jun 2010 17:59:37 -0400, strtr <strtr sp.am> wrote:Whahaha! Thanks, I knew I was missing something here.What is the pretty way to do something like this? Class C { void makeNew() { new typeof(this); } }As edited... -Steve
Jun 30 2010