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] Rukawa2227 08/12/11 2227
46539 살쪄도 상대적으로 안쪄보이는 체질입니다...oTL... [4] EsPoRTSZZang2178 08/12/11 2178
46538 네비게이션 추천좀 부탁드립니다. [2] 오뎅1894 08/12/11 1894
46537 혹시 유게글중에 이 내용의 글 아세요? [1] 껀후이1683 08/12/11 1683
46536 파이어 폭스 관련 질문입니다. [4] 도이2089 08/12/11 2089
46535 콧바람에서 아저씨 냄새가 난다는.. [11] Dean & Sam6363 08/12/11 6363
46534 공간보간에 관한 질문입니다. 문앞의늑대1891 08/12/11 1891
46532 수비형 유머의 이해? [7] Shura2108 08/12/11 2108
46531 드래곤볼 질문입니다. [3] 브랜드뉴1862 08/12/11 1862
46530 한국근현대사 교과서 수정에 대한 최근 논란에 대해 알고싶습니다. [2] 사람중심의 사1568 08/12/11 1568
46529 토익 처음 공부하는데 교재 추천부탁드립니다^^ [3] 쑤마이켈2130 08/12/11 2130
46527 문정동 쇼핑거리(?)괜찮나요? [5] Schizo2098 08/12/11 2098
46526 고리모양으로 감은 에나멜선 주위 자기장 질문이요. [5] GTU2297 08/12/11 2297
46525 컴퓨터가격질문요 [4] 서현♡1621 08/12/11 1621
46524 전자회로실험 가변저항 연결에 대하여. [4] 파일널푸르투8374 08/12/11 8374
46523 실업급여 문의... [1] Passion4U1956 08/12/11 1956
46522 영문과와 영어공부에 대해 궁금한 점이 있습니다.. [4] MayBee2109 08/12/11 2109
46520 비례대표로 뽑힌 의원이 의원직 상실하면 어떻게 보궐선거를 하나요? [5] VerseMan1956 08/12/11 1956
46519 롯데월드 관련 질문입니다. [4] 성세현1909 08/12/11 1909
46518 C++ 질문 [6] nuzang2050 08/12/11 2050
46512 기준금리가 뭔가요? [3] Shura1940 08/12/11 1940
46511 비스타에서 스타가 안깔리네요.. [2] Hildebrandt2099 08/12/11 2099
46510 언어쪽으로 센스가 있으신분들께 질문입니다. [42] 슈슈2435 08/12/11 2435
목록 이전 다음
댓글

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