참고 c++ for game programmers
.cpp 파일에서의 include 다이렉티브
클래스의 구현을 포함하는 .cpp 파일 에서는 가장 먼저 해당 클래스의 헤더 파일을 포함한다.(미리 컴파일된 헤더를 이용할 때는 예외)
//MyClassA.h class MyClassA { //... }; //MyClassA.cpp #include "MyClassA.h" //가장 먼저 포함되는 파일은 클래스의 헤더 파일이다. #include "MyClassC.h" #include "SomethingElse.h" //MyClassA 구현의 나머지 부분 //...
헤더 파일에서의 include 다이렉티브
상속 관계가 있을 때는 반드시 부모 클래스의 헤더 파일을 포함해야 한다.
클래스로의 포인터나 참조만을 이용하는 경우 클래스 이름의 전방선언(forward declaration)을 이용하면 된다. 헤더 파일에서 제거된 #include 문은 구현 파일에 추가 해야 한다.
//GameCamera.h #include "GameEntity.h"//부모클래스의 헤더 class GamePlayer; // 전방 선언 class GameCamera : public GameEntity { GamePlayer* GetPlayer(); private: GamePlayer* m_pPlayer; }; //GameCamera.cpp #include "GameCamera.h" #include "GamePlayer.h"//전방 선언된 클래스의 헤더 //GameCamera 구현의 나머지 부분 //...
미리 컴파일된 헤더
동일한 헤더를 반복해서 포함해야 할경우 미리 컴파일된 헤더 옵션을 사용한다.
//Precomp.h #include <iostream> #include <list> #include <vector> #include <map> #include <algorithm> #include "MyClass1.h" #include "MyClass2.h" //... //MyClassA.cpp #include "percomp.h" //미리 컴파일된 헤더 파일 #include "MyClassA.h" //실제로 포함된 첫번째 헤더 파일은 클래스의 헤더 파일 이어야 한다. #include "MyClassC.h" #include "SomethingElse.h" //MyClassA 구현의 나머지 부분 //...
'프로그래밍' 카테고리의 다른 글
[펌] 코드 정리 하기 (0) | 2012.08.11 |
---|---|
boost::intrusive_ptr (0) | 2012.07.25 |
Visual Studio 2010 부스트 빌드 (0) | 2012.07.24 |
ACE 정보 및 기술 지원 (0) | 2011.07.08 |
디자인 패턴, POSA, ACE 강좌 사이트 (0) | 2011.06.21 |