작성
·
72
0
Missile 클래스에서 WraithRef _target = nullptr; 코드를 넣어주면,
GameServer.cpp에서 테스트할 때 MissileRef missile(new Missile()); 이 코드를 타고 들어가면 TSharedPtr(T* ptr) { Set(ptr); } 동작할 때 ptr에 nullptr이 들어옵니다.
Missile 클래스에서 WraithRef _target = nullptr;을 하지 않고 Missile 클래스에서 WraithRef _target; 으로만 작성하면 정상 동작하고요.
저와 같은 증상 겪는 분 없나요?
vs 버전은 17.10.4 입니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. literate_t님.
질문해주신 내용을 보니, Missile
클래스에서 WraithRef _target = nullptr;
코드와 관련된 포인터 초기화 문제로 인해 발생하는 것으로 보입니다. C++에서 스마트 포인터를 사용할 때, 종종 포인터의 초기화나 할당과 관련된 이슈가 발생할 수 있습니다.
이 문제는 포인터의 초기 상태 설정이 예상과 다르게 작용할 수 있는 조건을 포함합니다. nullptr
로 초기화하는 동작과 단순 선언의 차이가 결과적으로 다르게 나타나는 요구를 알 수 있습니다. 이와 관련된 이전의 유사한 문제와 강사님이 제공하신 답변이 관련되어 있습니다.
다음 링크에서 비슷한 주제로 논의된 과정 및 해결 방법을 확인할 수 있습니다:
위의 게시물에서 강사님께서 스마트 포인터 사용 시 참조 카운트와 초기화에서의 상태 관리에 대해 설명하신 부분이 도움이 될 수 있습니다. 초기화 시점의 상태에 따라 어떠한 문제가 예상될 수 있는지, 그리고 이러한 상태 관리에서의 고려사항들을 확인하시길 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다!
머리가 너무 뜨거운 상태로 코드를 봐서 혼동이 있었던 것 같습니다! 강사님 코드와 조금 다르게 해보면서 실수를 못 찾았던 거였어요. 감사합니다!