C and C++
[C++] 순환참조(Circular Dependency) 제거하는 방법
개발새발
2020. 4. 12. 20:41
반응형
순환참조 발생 원인
1) header 파일에서 서로 include하는 경우
2) 서로 Dependency가 발생한 경우
순환참조의 문제점
1번의 경우 서로가 서로의 헤더를 계속 포함시켜 컴파일 시 문제가 발생한다.
2번은 서로가 호출하는 경우로 모듈간의 커플링이 타이트해지는 문제점이 있다.
해결방법
1) 전방 선언을 통한 헤더 구성
전방 선언을 통해 헤더의 include없이 포인터만으로 class를 선언 할 수 있다.
A.h
1
2
3
4
5
6
7
8
9
|
class B;//전방선언
class A {
public:
A() {};
void call(B* moduleB);
void printA();
};
|
cs |
b.h
1
2
3
4
5
6
7
8
|
class A;//전방선언
class B {
public:
B() {}
void call(A* moduleA);
void printB();
};
|
cs |
2) 인터페이스를 활용하여 느슨한 커플링을 만든다.
반응형