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

c++作业要设计两个类,一个Line类,一个Point类,而且这两个类的声明与定义要分开写,而这两类在定义时都要用到另外一个类,所以我在Line.h里用了Point.h,... c++作业要设计两个类,一个Line类,一个Point类,而且这两个类的声明与定义要分开写,而这两类在定义时都要用到另外一个类,所以我在Line.h里用了Point.h,在Point.h里用了Line.h,但是编译通过不了,我应该怎么改啊? 展开
 我来答
泷皖莲6
2015-04-20 · TA获得超过622个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:315万
展开全部

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

//Line.h

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

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

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


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

#pragma once

也能达到同样效果。


谢谢,望采纳。

追问
谢谢!
百度网友0cc22311d
2015-04-20 · TA获得超过552个赞
知道小有建树答主
回答量:661
采纳率:100%
帮助的人:266万
展开全部
可以采用这个办法:

以Line.h为例:
在Line.h的前面加一个声明:class Point; 这样就可以使用Point类了,不过这
需要使用指针的形式,如Point* p1; 而且在CPP文件里需要包含 Point.h;
这样就可以避免类之间的相互调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式