인프런 커뮤니티 질문&답변

hush park님의 프로필 이미지
hush park

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

장치 초기화

shared_ptr 과 헤더파일 관련하여 질문있습니다

작성

·

69

0

Engin.h 에서

#pragma once

class Engine

{

public:

void Init(const WindowInfo& window);

void Render();

void ResizeWindow(int32 width, int32 height);

private:

WindowInfo _window;

D3D12_VIEWPORT _viewport = {};

D3D12_RECT _scissorRect = {};

shared_ptr<class Device> _device;

shared_ptr<class CommandQueue> _cmdQueue;

shared_ptr<class SwapChain> _swapChain;

shared_ptr<class DescriptorHeap> _descHeap;

};

여기서 #include <memory>를 하지 않고도 shared_ptr이 컴파일이 가능한 이유가 뭔지 알수 있을까요...?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

shared_ptr이 컴파일 가능한 주요 이유는 다른 헤더 파일에서 이미 <memory>를 포함하고 있을 경우입니다. C++에서는 한번 포함된 헤더 파일이 전처리기에 의해 전역적으로 사용 가능해집니다. 따라서, Engine.h를 포함하기 전에 다른 헤더 파일에서 <memory>를 include 했다면, Engine.h 내에서 명시적으로 include하지 않아도 shared_ptr을 사용할 수 있습니다.

단, 이런 방식은 명시적이지 않으므로 혼란을 줄 수 있습니다. 따라서 필요한 헤더는 해당 파일에서 명시적으로 포함하는 것이 좋은 코딩 관례입니다.

hush park님의 프로필 이미지
hush park

작성한 질문수

질문하기