C++两个头文件互相包含对方,编译无法通过怎么办

2024-11-16 11:30:42
推荐回答(2个)
回答(1):

这是因为头文件只能包含一次,可以用宏定义来解决这个问题。在你的Line和Point两个.h文件中分别加入下面的代码:

//Line.h

#ifndef _LINE_H
#define _LINE_H
// 你自己的代码
#endif

//---------------------------------------------
// Point.h

#ifndef _POINT_H
#define _POINT_H
// 你自己的代码
#endif


其次,如果是VC,在这两个头文件最开头加

#pragma once

也能达到同样效果。


谢谢,望采纳。

回答(2):

可以采用这个办法:

以Line.h为例:
在Line.h的前面加一个声明:class Point; 这样就可以使用Point类了,不过这
需要使用指针的形式,如Point* p1; 而且在CPP文件里需要包含 Point.h;
这样就可以避免类之间的相互调用。