例如,在主函数中,我想获取用户的输入。根据输入,我将创建一个Rectangle
或Circle
,它们是子类Object
。如果没有输入(或未知),那么我只会创建一个通用对象。如何有条件地实例化不同的子类?
class Object
{
public:
Object();
void Draw();
private:
....
};
class Rectangle:public Object
{
public:
Rectangle();
.... //it might have some additional functions
private:
....
};
class Circle:public Object
{
public:
Circle();
.... //it might have some additional functions
private:
....
};
主要功能:
string objType;
getline(cin, objType);
if (!objType.compare("Rectangle"))
Rectangle obj;
else if (!objType.compare("Circle"))
Circle obj;
else
Object obj;
obj.Draw();
当然,上面的代码将无法工作,因为我不能实例如果语句中的对象。所以我尝试了这样的事情。
Object obj;
if (!objType.compare("Rectangle"))
obj = Rectangle();
else if (!objType.compare("Circle"))
obj = Circle();
obj.Draw();
这段代码会编译,但它不会做我想要的。出于某种原因,该对象不是按照子类的方式启动的(例如,我在子类中设置了某些对象的成员变量,特别是矢量)。但是,当我在Child类构造函数中放置一个断点时,它确实在那里运行。
那么我应该如何将实例化对象作为它的子类在一些if语句中?
它的工作原理! 除了我的问题的解决方案,感谢您提供良好的解释如何类和指针工作在C + +! – tuzzer 2012-02-27 02:36:46