디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

티버애미님 참고하시길2..

나그네(124.53) 2013.01.15 00:55:07
조회 82 추천 0 댓글 2



올려주신 소스를 유심히 봤습니다.

void main()
{
StreamMgr::Get()->LinkMonsterInfo( file_name ); // 내부적으로 파일을 읽어들여 몬스터 프로토타입을 생성시킵니다.

CActor *FirstMonster = 0, *SecondMonster = 0; // 테스트에 사용될 두 몬스터 객체 ;

FirstMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER); // 객체 생성을 합니다.
SecondMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER);

FirstMonster->DrawHP(); // 체력을 확인합니당. ㅠㅠ 여기서 프로그램이 또 죽어버려요 왜그렇죠 ㅠㅠ
SecondMonster->DrawHP();

FirstMonster->Attack(SecondMonster);
SecondMonster->DrawHP();
}

였고

CreateObj의 중심부분인

switch (type)
{
case MONSTER: Temp = new CMonster( PrototypeMgr<CMonster>::Get()->GetPrototype(game_level));
// 깊은 복사 생성자 만들엇어요. GetPrototype은 game_level 인덱스의 프로토타입을 반환해요.

default: return NULL;
}

가있는데요.

댓글로 다른분이 알려주셨듯이 일단 클라이언트가 죽는이유는

FirstMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER); // 객체 생성을 합니다.
SecondMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER);
에서 FirstMonster, SecondMonster 객체가 제대로 생성되지 않은 상태에서

FirstMonster->DrawHP(); 포인터로 접근하려하니 클라이언트가 죽는것입니다.

왜 CreateObj에서 객체가 제대로 생성되지 않았느냐..가 문제인데

답은 댓글에서 알려주셨듯이 스위치 케이스문안에서의 break를 안쓰셧기 때문에

case MONSTER: Temp = new CMonster( PrototypeMgr<CMonster>::Get()->GetPrototype(game_level));
이문까진 Temp에 제대로 객체가 생성되었지만 break가 없어
default: return NULL; 디폴트까지 실행되면서 return null;을 해버리죠 결국 Temp는 잘 생성되도 null을 리턴하고

FirstMonster 객체엔 null이 대입되면서 객체가 제대로 생성되지 않은 상태가된거죠. 이해가 되시나요?

해결방법은 break를 써주시면됩니다.


switch (type)
{
case MONSTER: Temp = new CMonster( PrototypeMgr<CMonster>::Get()->GetPrototype(game_level));
break; // 항상 case문에서 이벤트를 발생시킨후 break를 써주자.
// 깊은 복사 생성자 만들엇어요. GetPrototype은 game_level 인덱스의 프로토타입을 반환해요.

default: return NULL;

해결 될겁니다.

추가로... 객체를 생성하거나 캐스팅하거나 포인터에 접근하려하기전엔 항상 NULL체크를 생활화 하세요.

C++프로그래머가 되려면 기본중에 기본숙지 사항입니다.
ex)

FirstMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER); // 객체 생성을 합니다.
SecondMonster = ObjFactory::Get()->CreateObj(OBJ_MONSTER);

if( FirstMonster ) // if( true == FirstMonster ) 같은 구문 즉 객체가 NULL이 아니라면됬다면.
{
FirstMonster->DrawHP(); // 체력을 확인합니당. ㅠㅠ 여기서 프로그램이 또 죽어버려요 왜그렇죠 ㅠㅠ
}

if( SecondMonster ) // 위와 같은 맥락.
{
SecondMonster->DrawHP();
}

참고하시길...

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
343050 이러다 프갤 내려지는건 아닐까? [3] 육군야전출신(223.62) 13.01.15 151 0
343048 와이브로를 서버인터넷으로 사용할수 없나요? [2] jjj(117.16) 13.01.15 66 0
343047 안드로이드 웹 질문 질문(203.226) 13.01.15 46 0
343045 수원 멤버십 면접본사람있냐.. [10] 김동욱(211.178) 13.01.15 289 0
343043 형들 나 서피스 사게될듯 JSpiner갤로그로 이동합니다. 13.01.15 76 0
343042 win32 리버스하면 멀티바이트 함수를 유니코드 함수로 바꿀 수 있나 [7] u2em갤로그로 이동합니다. 13.01.15 113 0
343041 형왔다 얼룩돼지갤로그로 이동합니다. 13.01.15 33 0
343040 프로그램이 계속 중단되는데 이유를 잘 모르겠네요 ㅜㅜ 로야이(211.109) 13.01.15 92 0
343039 안녕? 물속의다이아갤로그로 이동합니다. 13.01.15 33 0
343037 프로그래머가 레알 암울한직업임? [3] ㅊㄹㄷㅂ(112.158) 13.01.15 364 0
343036 이거 왜 이런겅미? [4] 금고래갤로그로 이동합니다. 13.01.15 171 1
343035 아,.. 형들 이거뭐야. 회사에서 일하다가 컴 전원이 나갔는데 [3] 123(210.103) 13.01.15 95 1
343034 WIN32API Drawtext 질문이오 [2] 이힝(211.246) 13.01.15 49 0
343033 비트컴터학원에 대해 질문이있슴니다 질문(183.108) 13.01.15 134 0
343032 x86, x64 이런게 뭘 말하는거임?? [4] (203.90) 13.01.15 206 0
343031 회사에서 자꾸 모바일 시킬라고 하는데 슬슬 빡이친다 [1] dd(175.194) 13.01.15 178 0
343029 여기 질문해도 되는 건지 모르겠는데.... 질문(124.197) 13.01.15 87 0
343028 이야 ~ 기분조타! 티버애미(125.180) 13.01.15 54 0
343027 티버애미가 올렸던 질문연장선상에서 [4] ㅇㅇ(175.223) 13.01.15 69 0
343026 매킨토시에서 프로그램이 끝나도 메모리공간이 free가 안되는 문제가 있는 [2] ㅁㄴㅇ(59.25) 13.01.15 109 0
343025 이산수학,선형대수 VS DB,웹, 오픈ㅅㅂ [10] 늅늅(182.214) 13.01.15 278 0
티버애미님 참고하시길2.. [2] 나그네(124.53) 13.01.15 82 0
343023 티버애미님? 그냥 참고해보시길.. 나그네(124.53) 13.01.15 57 0
343022 CreateObj 함수에여 ㅠㅠ [2] 티버애미(125.180) 13.01.15 79 1
343021 님드라 제가 MFC 툴에서 만든 데이터들을 클라이언트에서 쓸라하는데 ㅠ [1] 티버애미(125.180) 13.01.14 74 0
343020 리눅스를 공부 넷째날 [3] 펔끄유갤로그로 이동합니다. 13.01.14 186 0
343019 다음 학기에 들을 과목인데 도움이 될 책 추천좀 부탁드릴게요.. [3] 초보찡(175.210) 13.01.14 89 0
343018 오예 ! 무료강의추천 좀해주셈 [8] wwww(59.16) 13.01.14 120 0
343016 님들아 프로그램이 죽는 이유를 모르겟어여 도와주세여 ㅠㅠ [12] 티버애미(125.180) 13.01.14 200 0
343014 진지한 질문인데 타자 얼마정도 나오세요? [4] ㅁㄴㅇㄹ(121.139) 13.01.14 96 0
343013 아 답답해.ㅠㅠㅠxcode 다시 질문.ㅠㅠ [10] d(203.252) 13.01.14 143 0
343012 프갤 뒤졌네 [2] 돌대갈(116.33) 13.01.14 88 0
343011 돌대갈님 동적할당이 젤 느리다고 하셨는데 왜 제일 느려여? [10] 팁매미(125.180) 13.01.14 150 0
343010 형들 xcode 인데요!!질문좀.ㅠㅠㅠ [12] d(203.252) 13.01.14 120 0
343008 열혈강의c 다음에 볼 책 추천좀 해주세요 [2] jct(119.197) 13.01.14 137 0
343007 ㅁㄴㅇ 니마 아까 질문해떤 사람인뎅 [14] 팁매미(125.180) 13.01.14 125 0
343006 test test(112.133) 13.01.14 31 0
343005 지금 회사에 취직하신분들도 있으신가여? [2] 새내기(203.226) 13.01.14 166 0
343004 형들 내일 복귀인데 하나만 가르쳐주세요 로야이(211.109) 13.01.14 99 0
343001 초보앙 스택 자료구조 쓰는 이유에서.. [16] 상상(175.123) 13.01.14 275 0
342999 php책추천좀해주세요 [7] ㅡㅡㅋ(175.215) 13.01.14 101 0
342998 형들 터미널 사용법 까먹었어 [14] d(203.252) 13.01.14 166 0
342997 초보앙 명령문에 r15가 맞는거임 pc가 맞는거임? [9] 상상(175.123) 13.01.14 97 0
342996 스마트 포인터 너무 좋은것 같다 [2] ㅇㅇ(58.102) 13.01.14 100 0
342995 보안가꿈을 갖고 영어뿐만 아니라 중국어도 있으면 이점인데 뭐가 우스워 [6] ㅇㄴ(119.192) 13.01.14 119 0
342993 속도? 안전성? [9] sstt(183.106) 13.01.14 158 0
342992 님들 웹프로그래밍 관련해서 질문드림 [1] (168.126) 13.01.14 78 0
342991 인자로 배열 요구할때 횽들은 *써 []써? [8] 티버애미(125.180) 13.01.14 176 0
342990 블루스크린때문에 [1] 털자털기갤로그로 이동합니다. 13.01.14 46 0
342989 졸업작품 추천좀 해주라 [10] ㅇㅇ(175.223) 13.01.14 263 0
뉴스 '불꽃야구' 에이스 이대은, 6이닝 무실점 퀄리티 스타트 팀 승리 견인!  디시트렌드 07.08
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2