我正在尝试将动态内存分配给对象数组,但是我不断收到以下错误:

“错误:C2143:语法错误:缺少';'在“ *”之前”
“错误:C2501:'Figura':缺少存储类或类型说明符”

欢迎任何帮助。我正在使用Visual Basic C ++ 2006,但是将使用Dosbox切换到Turbo C ++ 3.0以获取graphics.h的工作:(。

这是代码:

#include<iostream.h>

class Grup {
    private:
        int nr_elemente;
        Figura *figuri;
    public:
        Grup() {
            figuri = new Figura[nr_elemente];
        }
};


class Figura {

public:
    Figura();
    ~Figura();
    Figura(const Figura&);

    friend Figura operator+(const Figura& fig1, const Figura& fig2) {};
    friend Figura operator+(const Grup& gr1, const Grup& gr2) {}

    friend Figura operator*(const Figura& fig) {}
    friend Figura operator*(const Figura& fig) {}

};

Figura operator+(const Figura& fig, const Grup& gr) {
    return fig;
}

class Punct : Figura
{
public:
    int x, y;

    Punct(int x, int y) {
        Punct::x = x;
        Punct::y = y;
    }
};

class Segment : Figura
{
public:
    int x, y, poz;
};

class Dreptunghi : Figura
{
public:
    int x, y, poz;
};

void main(void) {



}

最佳答案

在这一行:

figuri = new Figura[nr_elemente];


编译器不知道类Figura存在。因此,它会产生错误,因为“ Figura”在当时是未知的标记。您应该使用前向声明:

class Figura; // forward-declare class Figura

class Grup {
/* ... */
};


class Figura {
/* ... */
};


问题在于,编译器不知道类Figura的大小,因此无法分配此类型的对象数组。因此,您可能需要使用指针或修改类设计。

关于c++ - 对象数组动态内存分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10285884/

10-10 16:19