【发布时间】:2012-02-27 02:16:06
【问题描述】:
例如,在主函数中,我想获取用户的输入。根据输入,我将创建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();
当然,上面的代码不起作用,因为我无法在 If 语句中实例化对象。所以我尝试了这样的事情。
Object obj;
if (!objType.compare("Rectangle"))
obj = Rectangle();
else if (!objType.compare("Circle"))
obj = Circle();
obj.Draw();
这段代码可以编译,但它不会做我想要的。由于某种原因,对象没有按照子类应有的方式启动(例如,我在子类中设置了一些对象的成员变量,特别是向量)。但是,当我在 Child 类构造函数处设置一个断点时,它确实运行到了那里。
那么我应该如何将实例化对象作为它的子类放在一些 if 语句中呢??
【问题讨论】:
标签: c++ class inheritance