디시인사이드 갤러리

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

갤러리 본문 영역

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

나그네(124.53) 2013.01.15 00:55:07
조회 83 추천 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/14 - -
AD 디지털 액세서리 기간한정 세일! 운영자 25/07/11 - -
343943 파이썬 ㅈ뉴비 질문 하나만 받아줘 횽들 [2] 시드니종자(60.241) 13.01.24 95 0
343942 c++ 소스인데 이거 뭔지 알겠는 사람? [5] S-GUN갤로그로 이동합니다. 13.01.24 172 0
343941 유니티에서 C/C++/openGL이 사용이 가능할까요? [2] AOB(106.240) 13.01.24 92 0
343940 자바 포인터 왜이럼 [4] ㅁㄴㅇ(1.236) 13.01.24 145 0
343938 아니 그래서 d3d나 opengl 아니면 뭐로 만드는거임? [2] (168.126) 13.01.24 121 0
343937 형들 보안관제사라는거 괜춘해?[조공있음ㅋㅋㅋ] [4] 아스터(175.201) 13.01.24 370 0
343935 연결리스트 무한히 늘어날수 있나요? [6] ㄱㅈ서(210.223) 13.01.24 155 0
343934 보조스트림을 만든 이유가 뭬야? (223.32) 13.01.24 56 0
343933 아 기분이 안조타 정수정•‿•갤로그로 이동합니다. 13.01.24 105 0
343932 OCaml은 파일도 제대로 못찾는 좆병신임 u2em갤로그로 이동합니다. 13.01.24 73 0
343930 삼성전자 사장 "아이폰, 극성스런 네티즌 덕에 잘 팔려" [1] ss(183.99) 13.01.24 153 1
343929 소매미 씨1발놈들아 다 나가라 [1] 얼룩돼지갤로그로 이동합니다. 13.01.24 166 1
343928 크로스브라우징 액티브X 대체 말인데 [7] ㅁㄴㄻㄹ갤로그로 이동합니다. 13.01.24 112 1
343927 근데 소맴이 회사랑 크게 다른게 없네 [11] ㅇㅇ(58.102) 13.01.24 421 0
343926 멤부심 쩌네 [1] aa(1.245) 13.01.24 199 0
343925 참젖인증.jpg [1] 참젖인증(118.44) 13.01.24 257 2
343924 OCaml 엿이나 먹어라 [4] u2em갤로그로 이동합니다. 13.01.24 271 0
343922 그러니깐 소맴이라는게 일종의 학원이냐? [14] ㅇㅇ(58.102) 13.01.24 376 1
343921 삼성소멤 괜찬아 보이는데 ㅇㄴㅁㅁㅇㄴ(59.11) 13.01.24 130 0
343919 유니티 고액연봉의 진실 [1] de(183.103) 13.01.24 311 0
343916 유니티?? [5] (14.138) 13.01.24 133 0
343915 구글 코드 서치가 절실하게 필요하다.. ㅇㅇ(58.102) 13.01.24 41 0
343914 일베 80프로가 소멤 ㅡㅡ; [1] 얼룩돼지갤로그로 이동합니다. 13.01.24 343 1
343913 소멤소멤 거리는데 [3] 땡칠도사갤로그로 이동합니다. 13.01.24 370 1
343911 유니티를 한번도 해본 적이 없는데, 진짜 나모 수준인거 같더만 어느정도? [2] ㅇㅇㅇ(116.120) 13.01.24 128 0
343910 소멤 : 이히히 병신들 나는 삼성전자 들어갈거니까 너희랑은 급이 달라 ㅋ [2] ㅇㅇㅇ(116.120) 13.01.24 414 0
343909 소멤 솔직히 들어가서 배우는게 훨신많은데 123123(182.209) 13.01.24 153 0
343908 그러고 보면 학부 다니면서 소멤 하는 애들 프로젝트 도와준 적 없냐? [2] ㅇㅇㅇ(116.120) 13.01.24 223 0
343907 소멤 부심 보소 ㅉㅉ 프갤 수준 [16] ㅇㅇ(210.121) 13.01.24 602 0
343906 프갤 수준 봐, 게임 만들 때 그래픽 라이브러리 뭐 쓰냐고 묻고 있는데 [3] ㅇㅇㅇ(116.120) 13.01.24 152 0
343905 visual c++ 암호화 복호화 소스 추천받음 [4] S-GUN갤로그로 이동합니다. 13.01.24 85 0
343904 IDE가 넘 똑똑해서 내가 멍청해지는거같다.. [7] 123(210.103) 13.01.24 134 0
343903 아 이 등신같은 유니티... 땡칠도사갤로그로 이동합니다. 13.01.24 97 0
343902 나모새끼가 죄다 배려놨음 [6] :ㅇ(121.160) 13.01.24 178 0
343901 게임이나 게임엔진은 뭘로 만드는거? [15] d(168.126) 13.01.24 282 1
343900 좆밥이 질문드리겠습니다 [5] :ㅇ(121.160) 13.01.24 82 1
343899 쏘멥갤이네 협력사(222.112) 13.01.24 71 0
343897 오늘의 vs [1] elwlwlwk(220.123) 13.01.24 63 0
343896 컴공 다닐때 학점관리 같은 거 질문이 있는데여 [1] 네로시엔갤로그로 이동합니다. 13.01.24 136 1
343895 kvm없이 qemu만 쓸 수 있는건가? [2] elwlwlwk(220.123) 13.01.24 70 0
343894 프로그래밍 갤러리수준이 원래이러냐? [3] PO스크롤WER갤로그로 이동합니다. 13.01.24 235 1
343893 소멤 출신은 삼전 들어가면 그렇게 심하게 따취급받어? [3] 삼전희망자(222.112) 13.01.24 510 0
343892 소멤이라는거 가면 뭐배우고 결론적으로 뭐가 됨? [6] 근데 소멤(168.126) 13.01.24 445 1
343890 프갤소멤 왜이리 많냐.. 혹시 대전종자있냐.. [2] 111(110.35) 13.01.24 169 1
343889 난 대체 소멤 어떻게 합격된건지 알수가 없다. 맙이(58.148) 13.01.24 230 0
343888 이번에 소멤붙은 일학년 있음?? [1] (223.62) 13.01.24 175 0
343887 소멤붙었당 [2] (223.62) 13.01.24 198 0
343886 c언어의 c도모르는초짜인데 [11] 탱구갤로그로 이동합니다. 13.01.24 268 0
343885 오늘 신도림역에서 남자 둘이 맞짱떴음 [2] dr.house갤로그로 이동합니다. 13.01.23 177 0
343883 형들 컴퓨터공학과 좋은대학 나와야되 ? [6] 아놔짜증나(183.98) 13.01.23 286 0
뉴스 민니, 감각적인 여름 일상 공개...“여름과 찰떡” 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2