상호 참조

C/C++/VC++ / MFC 2008. 2. 20. 18:34
C++로 프로그래밍을 작성 하다 보면은 심심치 않게 상호참조가 일어납니다.

예) 1. A와 B라는 클래스가 있습니다.
    2. 각 파일은 분리컴파일을 위해서 A.h, A.cpp, B.h, B.cpp 이렇게 선언과 정의를 분리해 있습니다.
    3. 각 파일들은 모두 같은 폴더에 위치합니다.
//A.h
#include "B.h"
class A {
    A();
    ~A();
    B b;
};

//A.cpp
#include "A.h"
A::A() {
}
A::~A() {
}

//B.h
#include "A.h"
class B {
    B();
    ~B();
    A a;
};
//B.cpp
#include "B.h"
B::B() {
}
B::~B() {
}

위와 같이 하면은 상호 참조로 인하여 에라!!!!! 가 발생합니다.
이때 해결책은
//A.h
class B;
class A {
    A();
    ~A();
    B b;
};

//A.cpp
#include "A.h"
#include "B.h"
A::A() {
}
A::~A() {
}

//B.h
class A;
class B {
    B();
    ~B();
    A a;
};

//B.cpp
#include "B.h"
#include "A.h"
B::B() {
}
B::~B() {
}


위와 같이 해주시면 간단하게 해결됩니다.
posted by 뚱2