其他分享
首页 > 其他分享> > C如何创建从抽象类继承的对象的动态数组?

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(); – &GT这将创建一个新对象,该对象将返回该对象的地址,并且您的数组实际上是指针数组.

最后,如果您想从任何类中调用函数平方,可以这样进行.

dyn_arr [0] – &GT平方();

附:如果您至少没有一点关于指针的经验,这可能会造成混淆.

标签:c,arrays,inheritance,abstract-class,dynamic
来源: https://codeday.me/bug/20191012/1904169.html