PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2008/12/11 14:47:30
Name nuzang
Subject C++ 질문
basicTag * docBasePtr;

switch (...) {
        case DOCUMENT:
                collectAttributes(ptr_documentList); // ptr_documentList 업데이트
                                                
                documentTag tagDoc (ptr_documentList); // ???
                docBasePtr = &tagDoc;
                        
                attachToStructure(docBasePtr); // array 추가
                break;
        ...
}



collectAttributes에서 ptr_documentList를 업데이트 한 후 documentTag클래스의 tagDoc을 선언합니다.
이게 인제 attachToStructure함수로 보내져서 array에 추가되게 해야되는데요.

문제는 tagDoc이 switch 안에서 선언되었기 때문에 (이게 문제인거죠?)
switch 밖으로 나가면 tagDoc 데이터가 날아가고 array 역시 문제가 생깁니다.

documentTag 선언 부분을 밖으로 빼야 될거 같긴 한데
그런다면 collectAttributes 에서 바뀌는 ptr_documentList 를 어떻게 tagDoc 도 바꿀 수 있는지 모르겠네요.


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
chcomilk
08/12/11 14:52
수정 아이콘
documentTag tagDoc (ptr_documentList); // ???
=> documentTag *tagDoc = new documentTag (ptr_documentList);

이런식으로... 하시면 될것 같습니다.

그런데.. 저것 보다는...

switch (...)

case DOCUMENT:
collectAttributes(ptr_documentList); // ptr_documentList 업데이트

docBasePtr = new documentTag (ptr_documentList);

attachToStructure(docBasePtr); // array 추가
break;
...



이렇게 하는 것이 좋을듯...
08/12/11 15:07
수정 아이콘
되네요... ㅠㅠ
한동안 헤메고 있었는데 감사합니다.

아 그리고 한가지 질문을 더 드리자면 switch case 안에서 tagDoc라는 새로운 변수 선언을 하면 딴 case들에서 "error C2360: initialization of 'tagDoc' is skipped by 'case' label" 라는 컴파일 에러가 나더군요.

왠지는 모르겠지만 그 주위에 if(1)를 넣어서
case DOCUMENT:
if(1)

collectAttributes(ptr_documentList); // collect attributes
documentTag * tagDoc = new documentTag (ptr_documentList); // create new tag with given attributes
attachToStructure(tagDoc);

break;

이렇게 쓰니까 컴파일 에러가 안나고 제대로 되서 솔직히 큰 문제는 아닌데... 뭔가 꼼수를 쓰는 것 같아서;;;
08/12/11 15:10
수정 아이콘
nuzang님// if(1) 요것만 빼셔도 돼요~ ^^
08/12/11 15:14
수정 아이콘
아 그렇게 하면 이 문제도 안나겠군요. 감사합니다.
chcomilk
08/12/11 15:15
수정 아이콘
nuzang님// 변수 scope 관련된 문제 입니다.

documentTag * tagDoc 의 Scope 가 case 안이 아니라 선언된 후 switch 를 빠져 나갈때 까지 입니다.
따라서 case DOCUMENT: 뿐만 아니라 다음 case 에도 영향을 주게 되는 것이죠...

제 생각으로는 error 라기 보다는 warning 이 발생해야 할 것 같은데... check option이 strict 하게 되어 있나 보네요...
살찐개미
08/12/11 15:16
수정 아이콘
데브피아보다 pgr이 훨씬 더.. ^^
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
46540 용산역이나 문래역 근처 찜질방 있나요? [5] Rukawa2221 08/12/11 2221
46539 살쪄도 상대적으로 안쪄보이는 체질입니다...oTL... [4] EsPoRTSZZang2168 08/12/11 2168
46538 네비게이션 추천좀 부탁드립니다. [2] 오뎅1886 08/12/11 1886
46537 혹시 유게글중에 이 내용의 글 아세요? [1] 껀후이1676 08/12/11 1676
46536 파이어 폭스 관련 질문입니다. [4] 도이2080 08/12/11 2080
46535 콧바람에서 아저씨 냄새가 난다는.. [11] Dean & Sam6343 08/12/11 6343
46534 공간보간에 관한 질문입니다. 문앞의늑대1882 08/12/11 1882
46532 수비형 유머의 이해? [7] Shura2103 08/12/11 2103
46531 드래곤볼 질문입니다. [3] 브랜드뉴1857 08/12/11 1857
46530 한국근현대사 교과서 수정에 대한 최근 논란에 대해 알고싶습니다. [2] 사람중심의 사1563 08/12/11 1563
46529 토익 처음 공부하는데 교재 추천부탁드립니다^^ [3] 쑤마이켈2123 08/12/11 2123
46527 문정동 쇼핑거리(?)괜찮나요? [5] Schizo2091 08/12/11 2091
46526 고리모양으로 감은 에나멜선 주위 자기장 질문이요. [5] GTU2290 08/12/11 2290
46525 컴퓨터가격질문요 [4] 서현♡1612 08/12/11 1612
46524 전자회로실험 가변저항 연결에 대하여. [4] 파일널푸르투8366 08/12/11 8366
46523 실업급여 문의... [1] Passion4U1949 08/12/11 1949
46522 영문과와 영어공부에 대해 궁금한 점이 있습니다.. [4] MayBee2102 08/12/11 2102
46520 비례대표로 뽑힌 의원이 의원직 상실하면 어떻게 보궐선거를 하나요? [5] VerseMan1950 08/12/11 1950
46519 롯데월드 관련 질문입니다. [4] 성세현1900 08/12/11 1900
46518 C++ 질문 [6] nuzang2038 08/12/11 2038
46512 기준금리가 뭔가요? [3] Shura1933 08/12/11 1933
46511 비스타에서 스타가 안깔리네요.. [2] Hildebrandt2091 08/12/11 2091
46510 언어쪽으로 센스가 있으신분들께 질문입니다. [42] 슈슈2429 08/12/11 2429
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로