어떤 파일에 아래와 같이 작성되어 있는 경우 컴파일러 입장에서는 ClassA에 몇 Byte를 할당해야 할지 모르기 때문에 에러가 발생한다.
class ClassA;
class ClassB
{
...
ClassA a;
};
이런 경우 하는 수 없이 다음과 같이 ClassA의 헤더를 추가해야 하는데
#include "ClassA.h"
class ClassB
{
...
ClassA a;
};
만약 ClassA의 헤더 안에서 ClassB의 헤더를 참조하고 있다면 헤더 꼬임 혹은 상호 참조가 발생해 문제가 생긴다.
#include "ClassB.h"
class ClassA
{
...
ClassB b;
};
클래스 전방 선언을 사용하면 헤더 파일에서 같은 모듈에 있는 다른 헤더 파일을 참조하지 않아도 되므로 상호 참조를 방지할 수 있다.
- 단, 항상 4바이트 혹은 8바이트의 크기임을 예측할 수 있는 포인터 형식에만 사용할 수 있다.
'C++ > 기타' 카테고리의 다른 글
콤마(,) 연산자 (0) | 2023.03.20 |
---|---|
람다 식에서 [this] 캡처 (0) | 2023.03.15 |
override 키워드 (0) | 2023.03.01 |
__cplusplus (0) | 2023.02.21 |
swap(), iter_swap(), swap_ranges() (0) | 2023.02.18 |