C ++两个头文件互相包含

时间:2015-03-19 10:16:25

标签: c++ c struct header ifndef

有三个.h个文件

A.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

Card.h

#ifndef __CARD_H__
#define __CARD_H__

struct Card{
    int num;
    char *type;
};

#endif

由于A.hB.h互相包含,因此并非所有头文件都包含在内。

请给我一些建议。

1 个答案:

答案 0 :(得分:1)

据我所知,你不需要包括" B.h"在你的" A.h"文件。因此删除它以减少依赖性。 包括" A.h"在你的" B.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