-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
학습에 크게 지장이 있는건 아니지만 단순 궁금해서 질문드립니다
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
Rookiss
지식공유자2022.10.29
제 코드에서는 board->GetEnterPos()로 한 것인데요.
_board->GetEnterPos()로 바꾸고
_board = board를 뒤로 배치하면 크래시가 나야 정상입니다.
어떻게 테스트를 하셨는지 기묘하네요
근면한 복어
질문자2022.10.30
그렇네요... 발단은 제가 본문에서 board->GetEnterPos()를 하신 거를 잘못보고 _board->GetEnterPos()로 잘못 쳐놓고 되길래 그런가보다 하고 넘어갔다가 다시 보니 이상해서 한 질문이었는데 다시 확인해보니
이게 되네요....?? 아무래도 컴파일러가 그냥 잡아주는걸로 이해하면 될까요?? 별 것도 아닌거에 괜히 시간만 뺐는 질문 같아서 안하려다가 혹시 제가 알고 있는게 잘못된건가 싶어서 확인해보고 싶었습니다ㅠㅠ
Rookiss
지식공유자2022.10.30
GetEnterPos()가 return Pos{1,1}에 불과하니 인라인 처리되어서
실제로 Pos{1,1}로 박혀서 그럴 것 같네요. GetExitPos()처럼 실제 멤버 변수를 사용하는 애로
바꿔보면 바로 크래시가 날겁니다.
답변 1