코드 짜다보니까 겹치는 클래스들 상위 클래스 하나 만들고 update를 가상함수로 묶었음
밑에 코드 더 있는데 이 문제에서 의미는 없음 대충 플레이어 이동시키는 코드임
이건 상위 클래스에 들어갈 조건임 저 조건들 다음 위치를 받고 (행동 직후 대기 시간, 입력이 없음, 맵의 경계 밖에 있음) 이면 return하는 식이었는데
이상하게도 return이 안됨 그냥 override된 함수가 그대로 실행되는 문제가 생김 예를들어 대기 시간인데 그냥 무시하고 계속 움직이는 식
그래서 그냥 override된 함수에 base.update지우고 그 내용을 전부 복붙하니까 해결됨
즉 base.update가 동작을 안했다는건데 대체 왜 그런거임?
아무리 생각해도 납득이 안가는데
base.Update()도 함수 호출이야. 부모함수에서 리턴했다고 자식함수가 리턴되는 건 아니지. 차라리 이벤트함수 하나 선언해놓고 저 조건식 아래에 그 이벤트함수를 호출하도록 하고 자식클래스에서 Update대신 새 이벤트함수를 오버라이드 하도록 해봐
내가 약간 잘못알고 있었네 난 하나로 합쳐지는 느낌인줄 알았는데
음..? base 호출 메서드에서 리턴하면.. base 밑에 줄 실행 안 되는 거 아니었음?
내 Die 메서드는 그렇게 동작하고 있는데 뭐지
ㄴ 코드 올려보샘
저영??
올렸슴
이거 맞음
첫 댓글 말대로 base.update()가 리턴한 뒤에는 자식 클래스의 update()가 실행되게 코드를 짜놨네. 이런 식으로 코드 설계를 할게 아니라 Move라는 가상 함수를 만들고 KeyBind를 하던가, Update를 override 할게 아니라 Move라는 가상 함수를 override해서 Base::Update에 this->Move() 하는 식으로 코드 짜야함
당연한거지 다른 함수는 리턴이 먹히는데 상속된거만 그렇게 작동 안할리는없
그냥 함수랑 똑같으니까 그냥 함수로 짜봐라. 정상이다
오버라이드 키워드 그대로 함수 덮어쓴다고 생각하면 됨 공통적인 동작을 강제하고 싶으면 템플릿 메소드 패턴 검색ㄱ
아 부모에서 리턴 했는데 자식 함수가 이어서 실행 됐다는 거구나 두 함수는 그냥 별개로 보면 됨 부모에서 리턴 했으면 자식 함수는 별개로 이어감