클래스 전방선언으로 불필요한 헤더 in 헤더 를 줄이자

본문 바로가기
사이트 내 전체검색

로그인
회원가입
IT Note

클래스 전방선언으로 불필요한 헤더 in 헤더 를 줄이자
0

View 14,723  | 작성일2010.01.13 15:27

본문

클래스 사용시에는 간혹가다 서로의 레퍼런스를 참조하는 경우가 있습니다.


---------AAA.h-------------------------
#include "BBB.h"

class AAA
{
BBB *bbbInst;
};
----------------------------------------

---------BBB.h-------------------------
#include "AAA.h"

class BBB
{
AAA *aaaInst;
};
----------------------------------------

위와같이 하면 서로의 헤더파일을 무한참조하기 때문에 #pragma once 나 #ifndef 랩핑 방법으로도 해결할 수가 없습니다. 



이럴때는 전방선언을 해주면 문제가 해결됩니다. 

---------AAA.h-------------------------
class BBB;

class AAA
{
BBB *bbbInst;
};
----------------------------------------

---------BBB.h-------------------------
class AAA;

class BBB
{
AAA *aaaInst;
};
----------------------------------------

주의할점은 전방선언을 한 클래스는 실제 클래스가 없는 빈 껍데기이기 때문에 레퍼런스 변수나 포인터 변수 선언시에만 유효합니다. 


만약 이렇게 하면 에러가 나겠죠

---------AAA.h-------------------------
class BBB;

class AAA
{
BBB bbbInst;
};
----------------------------------------



헤더끼리의 의존성을 줄여야 하기 때문에 서로의 헤더를 참조해야 하는 클래스의 경우 저렇게 헤더 파일에서는 전방선언을 한 뒤에 실제 사용되는 CPP 파일에서 인클루드 해주시면 문제가 생기지도 않고 C++ 에서도 권장되는 방법입니다. 

댓글목록

등록된 댓글이 없습니다.

IT Tip&Tech 목록

게시물 검색

접속자집계

오늘
1,682
어제
2,144
최대
6,399
전체
923,415
Copyright © LittleCandle All rights reserved.
문의메일 : littlecandle99@gmail.com
모바일 버전으로 보기