C++에서 코딩을 할 때 객체가 서로 참조를 해야 할 때가 있다.
A.c A.h가 있고 B.c B.h가 있을 때 양 헤더에 include를 시켜주면 클래스가 redefine되었다는 에러가 나온다. 이를 해결해기 위해선 다음과 같이 해야 한다.
C++에서는 predeclaration의 개념을 제공한다.
- A.H
#include "B.H"
class A
{
B* m_pb;
A(B* pb);
};
- B.H
class A; // 이렇게 선언만 합니다.
class B
{
A* m_pa;
B(A* pa);
};
- A.CPP
#include "A.H"
A::A(B* pb)
{
m_pb = pb;
}
- B.CPP
#include "B.H"
#include "A.H" // 여기서 참조하는 것은 상호 참조가 아닙니다.
B::B(A* pa)
{
m_pa = pa;
}
'Enginius > C / C++' 카테고리의 다른 글
MFC - 에디트박스를 써보자 (0) | 2009.11.23 |
---|---|
MFC - 창을 하나 더 띄워볼까? 모달리스 (0) | 2009.11.23 |
MFC - Slider Control을 써보자 (1) | 2009.11.06 |
MFC - 포커스를 옮겨보자 (0) | 2009.11.05 |
MFC - 그림을 그려보자. (5) | 2009.11.04 |