Alo*_*iel 8 c++ pointers destructor class
我有2个文件:
Point.h:
class Point {
int x;
int y;
char* name;
public:
Point() { name = new char[5]; }
~Point() { delete[] name; }
};
Run Code Online (Sandbox Code Playgroud)
并且Line.h:
class Point;
class Line {
Point* p;
public:
Line() {
p = new Point[2];
....
...
}
~Line() {
delete[] p;
}
};
Run Code Online (Sandbox Code Playgroud)
但是当我编译时,我得到了下一个错误:
deletion of pointer to incomplete type 'Point'; no destructor called
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏!
Ker*_* SB 14
您需要添加#include "Point.h"到您的文件中Line.h.您只能构造和删除完整类型.
Alterntively,请从成员函数的定义Line.h,并把它们放在一个单独的文件Line.cpp,并且包括Point.h与Line.h在该文件中.这是一种典型的依赖性减少技术,它使代码编译速度更快,但可能会丢失某些内联机会.
您具有前向声明Point,这对于声明指针或引用来说很好,但对于编译器需要知道前向声明类的定义的其他任何东西来说就不好了。
如果您需要在头文件中进行前向声明(是吗?如果不需要,只需#include "Point.h"在 中),然后在实现文件中Line.h实现您的函数,该文件为.Line#includePoint.h