[C++] 객체 지향 프로그래밍 - 클래스 전방 선언

Taeil Nam·2022년 11월 3일
0

C++

목록 보기
8/13
post-thumbnail

클래스 전방 선언 (Forward Declarations)

  • 특정 클래스에서 다른 클래스를 포인터로 사용할 때, 미리 해당 클래스가 필요하다는 것을 알려줌.
  • 함수의 프로토타입을 전방 선언하여 미리 알려주는 것처럼, 사용할 클래스의 이름을 전방 선언.
  • 특정 클래스의 헤더 파일에서 다른 클래스의 헤더 파일을 include 하지 않아도 됨.
  • 클래스 멤버 함수가 정의된 cpp 파일에서 다른 클래스 헤더 파일이 필요한 경우 include 수행.

예제 코드 (Inventory.h)

#pragma once

class Item;	// Item 클래스 전방 선언

enum
{
	MAX_SLOT = 100
};

class Inventory	// Inventory 클래스에서 전방 선언한 Item을 포인터 변수로 사용.
{
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 및 컴파일 속도 저하 방지)
  • 두 헤더 파일이 각각의 헤더 파일을 필요로 하게되는 현상이 발생하는 것을 방지. (헤더 파일 루프(?) 방지)

0개의 댓글