C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5530] [질문] dynamic_case를 쓸 경우와 아닐 경우의 차이
최성규 [] 2637 읽음    2001-02-17 12:15
이 동네 Tip'N Tricks 에 있는 "동적 생성된 컴퍼넌트를 TList에서 삭제"에
있는 내용을 보고 생각난 것인데요.
TList object에 어떤 type의 instance들을 만들어 쓰는 아래의 예는
Tip'N Tricks 14번에 있던 것입니다.

TList *MyButtonList = new TList;
for(int i=0; i<100; i++)
{
    TButton *TempButton = new TButton(this);
    TempButton->Parent = this;
    MyButtonList->Add(TempButton);
}
이 경우 컴퍼넌트 삭제는 다음과 같이 해야 합니다.
while(MyButtonList->Count)
{
    delete dynamic_cast<TButton *>(MyButtonList->Items[0]);
    MyButtonList->Delete(0);
}

그,런,데,
dynamic_case operator를 쓰지 않고 그냥 포인터타입을 casting하면 안될까요?

    delete (TButton *)(MyButtonList->Items[0]);

컴파일 해 본 결과로는 전통적인 casting을 한 아래의 경우에는 제대로 되는데
오히려 dynamic_cast 연산자를 쓴 경우에는 컴파일 에러가 발생하는군요.

[BC++4, Error] E2307 Type 'void' is not a defined class with virtual functions.
→A dynamic_cast was used with a pointer to a class type that is either undefined,
  or doesn't have any virtual member functions.

어케된 것인지...

청담동에서
최성규

+ -

관련 글 리스트
5530 [질문] dynamic_case를 쓸 경우와 아닐 경우의 차이 최성규 2637 2001/02/17
5570     Re:[질문] dynamic_case를 쓸 경우와 아닐 경우의 차이 박지훈.임프 2739 2001/02/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.