간혹가다가 헤더파일이 서로 참조 되야 하는 경우가 생긴다.
헤더파일이 여러번 참조되는 것을 방지 하기 위해 전처리기 명령
#ifnddf _XXX_H
#define _XXX_H
...
...
..
..
#endif
를 붙이지만 헤더파일을 서로 참조하는 경우 이런 방법이 통하지 않는다.
예를 들어 두 클래스 (AAA.h, AAA.cpp / BBB.h, BBB.cpp) 가 있다고 할때
////////////////////
// AAA.h
///////////////////
#include "BBB.h"
class AAA
{
public:
AAA();
~AAA();
void Get(BBB &b);
};
////////////////////
// BBB.h
///////////////////
#include "AAA.h"
class BBB
{
public:
BBB();
~BBB();
void Get(AAA &a);
};
와 같은 경우 헤더파일을 서로 참조하여 컴파일 오류가 난다.
이럴 경우 클래스 위에 다른 헤더파일의 클래스 타입만 명시 해 준 후,
.cpp 파일에서 헤더 파일을 인클루드 시켜 주면 된다.
////////////////////
// AAA.h
///////////////////
class BBB;
class AAA
{
public:
AAA();
~AAA();
void Get(BBB &b);
};
////////////////////
// BBB.h
///////////////////
class AAA;
class BBB
{
public:
BBB();
~BBB();
void Get(AAA &a);
};
'Programming > C/C++/CS' 카테고리의 다른 글
파일 병합 프로그램 (2) | 2013.07.28 |
---|---|
[0,n) 사이의 부동소수점 수 난수 구하기 (0) | 2013.01.30 |
sublime text2에서 c, c++ 코드 작성 후 컴파일 하기 (1) | 2013.01.29 |
지역 변수 또는 임시 변수의 주소를 반환하고 있습니다. (0) | 2013.01.29 |