www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Object.factory and default constructor

reply "Cherry" <cherry dream.land> writes:
The code below throws assertion failure. Documentation for 
Object.factory says that factory can create an object if the 
default constructor is present.

So the question is -- Does D not consider this(int x=0); a 
default constructor?


module test;
class Bar {
   this(int x=0) {}
}
void main() {
   assert(Object.factory("test.Bar") !is null);
}

// Regards
// Cherry
Feb 14 2014
next sibling parent "Jakob Ovrum" <jakobovrum gmail.com> writes:
On Friday, 14 February 2014 at 12:53:55 UTC, Cherry wrote:
 So the question is -- Does D not consider this(int x=0); a 
 default constructor?

No, that is not a default constructor. Use overloading if you want it to be.
Feb 14 2014
prev sibling parent "Dicebot" <public dicebot.lv> writes:
On Friday, 14 February 2014 at 12:53:55 UTC, Cherry wrote:
 The code below throws assertion failure. Documentation for 
 Object.factory says that factory can create an object if the 
 default constructor is present.

 So the question is -- Does D not consider this(int x=0); a 
 default constructor?


 module test;
 class Bar {
   this(int x=0) {}
 }
 void main() {
   assert(Object.factory("test.Bar") !is null);
 }

 // Regards
 // Cherry

Default constructor is always one declared without the arguments. Default arguments are pasted upon caller side and can't be figured out from TypeInfo.
Feb 14 2014