我正在尝试将动态内存分配给对象数组,但是我不断收到以下错误:
“错误: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/