본문으로 건너뛰기
Unreal Engine 모듈 · 플러그인 개발LESSON 12

Forward Declaration과 의존성 최소화 실전

난이도심화
예상 시간85분
선수지식11강의 비순환 의존성 그래프

12강. Forward Declaration과 의존성 최소화 실전

1. 이번 강의에서 해결할 문제​

Public Component Header가 World, Collision, DrawDebugHelpers와 프로젝트 Character Header까지 Include합니다. 작은 구현 변경이 소비 모듈 전체를 다시 컴파일하고, Include 순서가 바뀌면 불완전 타입 오류가 나타납니다. 무엇을 전방 선언할 수 있는지와 CPP에서 완전한 정의가 필요한 시점을 구분해야 합니다.

2. 학습 목표​

3. 핵심 개념​

클래스 포인터·참조의 선언은 크기를 몰라도 되므로 class AActor;로 전방 선언할 수 있습니다. 값 멤버, 상속, sizeof, 인라인 함수에서 멤버 접근은 완전한 타입이 필요합니다. USTRUCT 값 멤버와 일부 Template·Reflection 문맥은 실제 Header가 필요하므로 컴파일 결과와 Engine Header 계약을 확인합니다.

4. 단계별 실습​

무거운 Header

#include "Engine/World.h"
#include "GameFramework/Character.h"
#include "DrawDebugHelpers.h"
#include "InteractionScanner.generated.h"

UCLASS()
class REUSABLEINTERACTION_API UInteractionScanner : public UObject
{
GENERATED_BODY()
public:
ACharacter* FindTarget(UWorld* World) const;
};

개선된 Header

Public/Interaction/InteractionScanner.h
#pragma once

#include "UObject/Object.h"
#include "InteractionScanner.generated.h"

class AActor;
class UWorld;

UCLASS()
class REUSABLEINTERACTION_API UInteractionScanner : public UObject
{
GENERATED_BODY()

public:
AActor* FindTarget(UWorld* World) const;
};
Private/Interaction/InteractionScanner.cpp
#include "Interaction/InteractionScanner.h"

#include "Engine/World.h"
#include "GameFramework/Actor.h"

AActor* UInteractionScanner::FindTarget(UWorld* World) const
{
return IsValid(World) ? nullptr : nullptr;
}

함수 반환형을 특정 ACharacter 대신 AActor 또는 Interface 계약으로 바꾼 것은 Include 최적화뿐 아니라 재사용 경계 개선입니다. Header의 인라인 함수에서 World->...를 호출하면 다시 완전한 타입이 필요하므로 CPP로 이동합니다.

5. 코드가 동작하는 이유​

컴파일러는 포인터 크기를 알기 위해 클래스 정의 전체가 필요하지 않습니다. 구현 CPP는 실제 멤버 접근 시 Header를 Include합니다. Public Header의 전이 Include가 줄면 소비 Module의 재컴파일 범위와 우연한 의존성이 감소합니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

Forward Declaration과 의존성 최소화 실전 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Forward Declaration과 의존성 최소화 실전” 실행 결과를 설명하는 내용으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2“Forward Declaration과 의존성 최소화 실전”에서 ‘값 타입까지 무조건 전방 선언’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

12강. Forward Declaration과 의존성 최소화 실전 미완료 상태