有如下多个类:
  class A{}
  class B{}
  class C{}
  class D{}
  class E{}
  class F{}
  class G{}
  ....
下面我想根据用户的要求,动态的创建出上述类中的其中几个,并形成全局的类指针,有什么好的办法?

解决方案 »

  1.   

    这些类应有相同的接口,如a(),b(), 把这些放在一基类里,如T ,其他类从基类派生
    在你使用的地方用 
    T* p ;
    p = new A ;(p = new B; p = new C)
    p->a(); 
    p->b(); 当然,你可以更进一步的抽象
      

  2.   

    xt_jat(桑巴)说的对,只有这样才叫面向对象的编程,
    先抽象类(其中的函数(公有)用作以后的接口),但没必要象桑巴兄说的那么庞大,构造一个基类
    然后在需要调用的地方直接使用就可以了,当然在使用之前要分配它的对象也就是内存,如桑巴兄说的p=new A;(p = new B; p = new C)
      

  3.   

    桑巴说的基本上是对的,但如果你要动态生成的类是编程期间无法明确的,就是说你不知道要生成A,B还是C类的对象的话,应该模拟MFC中动态生成的技术,可以参考一下《深入浅出MFC》一书,有很详细的剖析。
      

  4.   

    如果是楼上这样我觉得可以先抽象出几个纯虚类,即几个interface,具体的类从interface派生,可以多重继承
      

  5.   

    to  KK_Dog(不死印) :有没有类式于这样的代码,不胜感激
      

  6.   

    把这些做为数据成员放在类myclassk中
    重载myclassk的构造函数
    myclassk(BOOL a,BOOL b,BOOL c,BOOL d......)
    {
       if(a)则new a
       if(b)则new b
       ....
    }
         
    在你使用的地方用 
    myclassk* p ;
    p->a;
    p->b; 
      

  7.   

    那在使用的地方,是不是还需要判断一下具体指定了哪一个类?我想在New class时就传相应的数据的
      

  8.   

    我觉得你这个想法不现实。
    你这个思想的实质是给用户提供2次开发的接口。但是你可能没有意识到这一点,所以你认为用类能简单搞定。
    真是这样的话你就错了,2次开发和类没有任何关系,2次开发支持也不可能简单搞定。
    我建议你学学在VC中运行VB宏代码的技术,在VBA平台上提供2次开发环境,像OFFICE那样。