Object.factory create instance failed?
Sam Hu
samhudotsamhu at gmail.com
Thu Jun 25 01:14:26 PDT 2009
Sam Hu Wrote:
> 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.
>
> Returns:
> 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;
> doggie.bark;
>
> 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
> doggie.bark;
>
> 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;
> (cast(Dog)obj).bark;
>
> 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.
>
> Regards,
> Sam
>
>
BTW,why __traits has no isStaticFunction?
Thanks in advance.
More information about the Digitalmars-d-learn
mailing list