none
有关类的动态实例化问题 RRS feed

  • 问题

  • 比如我建立3个类myClass1,myClass2,myClass3

    现在我需要根据不同的情况来调用myClass1、myClass2或者myClass3中的一个

    比如我需要调用myClass3

    但我现在只能获取 "myClass3 "这个字符串

    请问我怎么才能从"myClass3 "这个字符串来实例化这个类?

    谢谢!!

    2012年4月12日 9:18

答案

全部回复

  • 用 宏 可以搞定这个。

    比如这样定义一个宏:(自定义了一个String类,有带一个参数的构造)

    #define _DYNAMIC_CREATE(objectPointer, className, parameter) \
        objectPointer = new className(#parameter);

    在代码中可以这样用:(构造一个值是"abc"的String对象)

    void *objPtr;
    _DYNAMIC_CREATE(objPtr, String, abc);

    这样,objPtr就持有了动态创建的对象的地址。当然用时需要强制类型转换下。

    2012年4月12日 12:51
  • 用 宏 可以搞定这个。

    比如这样定义一个宏:(自定义了一个String类,有带一个参数的构造)

    #define _DYNAMIC_CREATE(objectPointer, className, parameter) \
        objectPointer = new className(#parameter);

    在代码中可以这样用:(构造一个值是"abc"的String对象)

    void *objPtr;
    _DYNAMIC_CREATE(objPtr, String, abc);

    这样,objPtr就持有了动态创建的对象的地址。当然用时需要强制类型转换下。


    谢谢你的回答,但是这样做我该如何能根据字符串去强制类型转换呢?
    2012年4月12日 13:50
  • Google一下 C++ 反射机制
    http://blog.csdn.net/yongliliu/article/details/4136611


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 cjalchange 2012年4月13日 5:34
    2012年4月13日 2:12
    版主
  • 嗯,谢谢,我去看看!

    2012年4月13日 5:34