클래스 전방 선언 (Forward Declarations)
- 특정 클래스에서 다른 클래스를 포인터로 사용할 때, 미리 해당 클래스가 필요하다는 것을 알려줌.
- 함수의 프로토타입을 전방 선언하여 미리 알려주는 것처럼, 사용할 클래스의 이름을 전방 선언.
- 특정 클래스의 헤더 파일에서 다른 클래스의 헤더 파일을 include 하지 않아도 됨.
- 클래스 멤버 함수가 정의된 cpp 파일에서 다른 클래스 헤더 파일이 필요한 경우 include 수행.
예제 코드 (Inventory.h)
#pragma once
class Item;
enum
{
MAX_SLOT = 100
};
class Inventory
{
public:
Inventory();
virtual ~Inventory();
bool AddItem(Item* item);
bool RemoveItem(Item* item);
Item* GetItemAtSlot(int slot);
void Clear();
static Inventory* GetInstance();
private:
int FindEmptySlot();
int FindItemSlot(Item* item);
private:
Item* _items[MAX_SLOT];
int _itemCount = 0;
};
사용 이유
- 클래스 헤더 파일에서 다른 클래스 헤더 파일을 include 하지 않아도 됨. (불필요한 include 및 컴파일 속도 저하 방지)
- 두 헤더 파일이 각각의 헤더 파일을 필요로 하게되는 현상이 발생하는 것을 방지. (헤더 파일 루프(?) 방지)