C如何创建从抽象类继承的对象的动态数组?
作者:互联网
我的任务特别指出,我必须创建从抽象类Figure继承的Squares和Triangles的随机数组,然后我必须打印出它们的正方形区域.来自C#,我以为我可以使用一系列对象,但是它们在C中不存在.我不允许使用任何类似矢量的东西.动态创建Figure数组是行不通的,因为显然它不适用于抽象类.我该怎么办?请尽可能简化它.
这是我当前的代码.非常基本,但这只是为了显示我正在尝试做的事情.
#include <iostream>
#include <stdlib.h>
using namespace std;
class Figure
{
public:
virtual double square() = 0;
};
class Square : public Figure
{
public:
double side;
double square()
{
return side * side;
}
};
class Triangle : public Figure
{
public:
double height;
double side;
double square()
{
return 0.5 * side * height;
}
};
void main()
{
int size = 20;
Figure *dyn_arr = new Figure[size]; // this doesn't work
//Also I have to fill it somehow too...
for (int i = 0; i < size; i++) cout << Figure.square(); //this doesn't work either
}
解决方法:
首先main必须返回int.然后,您需要创建一个指针数组,该指针数组将显示给抽象类Figure.
图** dyn_arr =新图* [大小];
然后,如果要添加派生类的新对象,则只需像这样添加即可.
dyn_arr [0] = new Triangle(); – >这将创建一个新对象,该对象将返回该对象的地址,并且您的数组实际上是指针数组.
最后,如果您想从任何类中调用函数平方,可以这样进行.
dyn_arr [0] – >平方();
附:如果您至少没有一点关于指针的经验,这可能会造成混淆.
标签:c,arrays,inheritance,abstract-class,dynamic 来源: https://codeday.me/bug/20191012/1904169.html