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