Object.factory create instance failed?

Sam Hu samhudotsamhu at gmail.com
Thu Jun 25 00:42:20 PDT 2009

The Dmd2.030 spec. said:

static Object factory(string classname); 
Create instance of class specified by classname. The class must either have no constructors or have a default constructor. 

and said also:
class ClassInfo
static ClassInfo find(in char[] classname); 
Search all modules for ClassInfo corresponding to classname. 

null if not found 

Object create(); 
Create instance of Object represented by 'this'. 

In below code snippet:

class Dog
public void bark(){}
int main(string[] args)
auto obj=Object.factory("Dog");
Dog doggie=cast(Dog)obj;

return 0;

Compiled successfully but failed when run:
Object.Error:Access Violation.

I also tried ClassInfo.find(string classname),ClassInfo.create() but caused the same error.

In the above code snippet,if I wrote as below:
class Dog{...}
int main(string[] args)
Object obj=Object.factory("Dog");
obj=new Dog;   //1
Dog doggie=cast(Dog)obj;//2

return 0;
Everything works fine.But it seems that this does not make sense to dynamic create class instance.It is just the same as below:
Object obj;
obj=new Dog;

So is there any other options can I reach the goal,i.e.,dynamically create an class instance and invoke its method?

Thanks in advance.


More information about the Digitalmars-d-learn mailing list