• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다

22.10.29 17:57 작성 조회수 172

0

Maze.cpp에서 player.Init(&board)를 할 때 Player class 안에 멤버 변수 _board에는 nullptr이 들어 있잖아요 그런데 Player.cpp에서 Init 함수 내에 _pos = _board->GetEnterPos( ) 를 호출 할 때 _board에는 nullptr이 들어있는데 어떻게 GetEnterPos( ) 를 호출 할 수 있는건가요?

제 생각으로는 _board = board로 먼저 _board를 특정 주소값으로 세팅한 다음 GetEnterPos( ) 함수를 호출해야 되는 것 같은데 순서를 뒤바꿔서 해도 실행하는데 전혀 문제가 없더라구요 그 이유가 궁금합니다!

답변 1

답변을 작성해보세요.

1

제 코드에서는 board->GetEnterPos()로 한 것인데요.

_board->GetEnterPos()로 바꾸고
_board = board를 뒤로 배치하면 크래시가 나야 정상입니다.

어떻게 테스트를 하셨는지 기묘하네요

그렇네요... 발단은 제가 본문에서 board->GetEnterPos()를 하신 거를 잘못보고 _board->GetEnterPos()로 잘못 쳐놓고 되길래 그런가보다 하고 넘어갔다가 다시 보니 이상해서 한 질문이었는데 다시 확인해보니

이게 되네요....?? 아무래도 컴파일러가 그냥 잡아주는걸로 이해하면 될까요?? 별 것도 아닌거에 괜히 시간만 뺐는 질문 같아서 안하려다가 혹시 제가 알고 있는게 잘못된건가 싶어서 확인해보고 싶었습니다ㅠㅠ

GetEnterPos()가 return Pos{1,1}에 불과하니 인라인 처리되어서
실제로 Pos{1,1}로 박혀서 그럴 것 같네요. GetExitPos()처럼 실제 멤버 변수를 사용하는 애로
바꿔보면 바로 크래시가 날겁니다.