C++两个头文件相互包含
Posted
技术标签:
【中文标题】C++两个头文件相互包含【英文标题】:C++ two header files include each other 【发布时间】:2015-03-19 10:16:24 【问题描述】:共有三个.h
文件
啊哈:
#ifndef __A_H__
#define __A_H__
#include"Card.h"
#include"B.h"
struct A
Card card;
.....
;
void getCards(A *a, int num);
#endif
B.h
#ifndef __B_H__
#define __B_H__
#include"Card.h"
#include"A.h"
struct B
Card card;
.....
;
void getCards(A *a, B *b, int num);
#endif
卡.h
#ifndef __CARD_H__
#define __CARD_H__
struct Card
int num;
char *type;
;
#endif
由于A.h
和B.h
相互包含,因此并非所有头文件都包含在内。
请给我一些建议。
【问题讨论】:
@EdChum :你应该把它变成一个答案 “并非所有头文件都包括在内”是什么意思。 ??? @EdChum :我进行了快速搜索,但没有找到我认为可以解决操作员问题的已回答问题。也许我还不够努力——感觉它应该存在。 @theadnangondalA.h
包括 B.h
。由于有#ifndef
语句,B.h
没有编译
是的,当然......头文件没有编译,但是是的,我明白你的意思......似乎@EdChum提供的答案可以解决你的问题......即forward declaration
跨度>
【参考方案1】:
据我所知,您不需要在“A.h”文件中包含“B.h”。所以删除它以减少依赖。 在“B.h”文件中包含“A.h”似乎也没有必要。一个简单的前向声明就足够了。
B.h
#ifndef __B_H__
#define __B_H__
#include"Card.h"
class A; // then you will have to include A.h in your B.cpp file
struct B
Card card;
.....
;
void getCards(A *a, B *b, int num);
#endif
【讨论】:
以上是关于C++两个头文件相互包含的主要内容,如果未能解决你的问题,请参考以下文章