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

승환님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

TextRPG (OOP) #1

클래스 생성자를 헤더와 cpp에 나누어 선언하는 방법 관련 질문입니다.

21.10.11 18:36 작성

·

320

0

안녕하세요. 좋은 강의 감사히 듣고 있습니다.
 
클래스 생성자를 헤더와 cpp에 나눌 때 관련하여 질문이 있습니다.
 
<조건>
1. Player 클래스를 상속 받은 Knight 클래스가 있습니다.
2. Knight 클래스 생성자를 헤더와 cpp에 나누어 선언하려고 합니다.
 
----------------------- 방법 1 ----------------------
//헤더 파일
Knight() : Player(PT_Knight);
 
//CPP파일
Knight::Knight() : Player(PT_Knight)
{
_hp = 100;
}
----------------------------------------------------
 
 
 
------------------------방법 2 ---------------------
// 헤더 파일
Knight();
 
// CPP파일
Knight::Knight() : Player(PT_Knight)
{
_hp = 100;
}
-------------------------------------------------
 
방법 1로 작성하니 빌드 과정에서 오류가 발생하고, 방법 2는 성공적으로 빌드가 되었습니다.
 
질문드릴 것은, '방법 2와 같이 작성을 해도 성공적으로 Player의 생성자를 호출해 오는가?' 입니다.
 
헤더 파일의 선언에서 Player의 생성자를 호출해온다고 선언을 하지 않았던게 마음에 걸리네요.
 
명료하게 질문을 드려야 하는데, ㅠㅠ 잘 전달이 되었는지 모르겠네요.. 으으.
 
그래도 답변을 부탁드려봅니다! 감사합니다.^^

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

2021. 10. 11. 20:04

Knight() : Player(PT_Knight);

이거는 문법적으로 잘못된 것입니다.
Player(PT_Knight)는 구현부인데 정작 Knight()는 선언부처럼 짬뽕(?)시켰기 때문이죠.

'방법 2와 같이 작성을 해도 성공적으로 Player의 생성자를 호출해 오는가?'

성공적으로 빌드가 됐으면, 제대로 동작한다고 간주해도 무방합니다.
Knight나 Player를 상속 받았다면 Knight.h에 #include "Player.h"가 무조건 있을 수 밖에 없습니다.
그리고 Knight.cpp에선 Knight.h을 포함하고 있을테니
Player를 어떻게 만들어야 하는지 다 알고 있는 상태입니다.

승환님의 프로필 이미지
승환
질문자

2021. 10. 12. 18:07

친절한 설명 감사드립니다! :)

승환님의 프로필 이미지

작성한 질문수

질문하기