没有分了, 等有分了一定加分, 谢谢
定义一个基类A.
其派生类为AA, AB, AC....
实际的程序是这样的, 在控制台中让用户输入一个数字, 选择创建哪个类.
输入1则创建AA, 释放其它; 2则创建AB, 释放其它; 3则创建AC, 释放其它.....
这样问题就来了, 如果我在程序中为每个类声明一个变量, 如:
AA * paa; AB * pab; AC * pac......
然后根据用户的选择来创建和释放相应的类的话, 是非常的麻烦的了.
我想是不是可以只声明一个A * pa;
然后根据用户的输入, 来释放, 创建它的派生类到这个接口上, 这样就不必那么烦琐了.
不知道这样的技术在面对对象中叫什么? 应该如何实现啊.
或者是有没有其它的更好的解决方法啊, 谢谢.

解决方案 »

  1.   

    工厂模式?class Client
    {
      private:
        A* instance;
      public:
        Client(int input);
        virtual ~Client();
        void Use();
    };void Client::Use()
    {
        instance->xxxx();
    }Client::Client(int input)
    {
      switch(input)
      {
        case 1:
          instance = new AA();
          break;
        case 2:
          instance = new AB();
          break;
        case 3:
          instance = new AC();
          break;
        default:
          instance = NULL;
          break;
      }
    }Client::~Client()
    {
      if (instance != NULL)
        delete instance;
      instance = NULL;
    }
    不过c++的问题还是放到c++板块比较合适,那里c++高手甚多啊。
      

  2.   

    class A { }
    class AA : A { }
    class AB : A { }
    class AC : A { }class Program
    {
        static Type[] types = new Type[] { typeof(AA), typeof(AB), typeof(AC) };
        static A GetInstance(int input)
        {
            if (input >= 1 && input <= 3)
                return (A)Activator.CreateInstance(types[input - 1]);
            return null;
        }
        static void Main(string[] args)
        {
            int i = 2;
            A a = GetInstance(i);
        }
    }