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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[495] [만해] TTypedList 객체를 소개 합니다.
강재호.만해 [greenuri] 7292 읽음    2005-08-23 17:23
ttypelist.h 1.5KB TTypedList 객체
안녕하세요 만해입니다.

이전에 찾아서 쓰고 있다가 오늘 생각이 나서 올립니다.

TTypedList란 객체인데요

Template을 이용해서 명시적으로 사용자 정의 타입에 대한 TList 객체와 같은 작업을 수행해 줍니다.

간단히 애기 드리면

TList를 이용할때는 다음과 같은 코드를

TList* Obj_List = new TList;
for ( int i = 0 ; i < 10 ; i ++ )
  {
    TAnObject* obj = new TAnObject;
    Obj_List->Add(Obj);
  }

for ( int i = 0 ; i < Obj_List->Count ; i ++ )
  {
    TAnObject* obj = (TAnObject*)TList->Items[i];
    // Do it
}

위와 같은 형태로 TList에 입력 할때는 몰라도 받아 들일때는 명시적으로 타입 캐스팅을 해줘야 하는데요

TTypedList객체는 타입 캐스팅을 안 해줘도 되고요,

더 좋은건 입력 하는 객체가 소멸시 별도의 작업을 해줘야 할 필요가 없다면 스스로 삭제 시키는 기능 까지 있습니다.

예를 보여 드리면요

TTypedList<TAnObject*> Obj_List = new TTypedList<TAnObject>(true);//-> true는 자동 삭제 한다는 설정입니다.
// 기본적으로 false가 기본이고요, false일시에는 자동 삭제를 수행하지 않습니다.

for ( int i = 0 ; i < 10 ; i ++ )
  {
    TAnObject* obj = new TAnObject;
    Obj_List->Add(Obj);
  }

for ( int i = 0 ; i < Obj_List->Count ; i ++ )
  {
    TAnObject* obj = Obj_List->Items[i];  // 이부분이 저는 젤 맘에 드네요 명시적인 타입 캐스팅이 필요 없다는점.
    // Do it
}
Obj_List->Clear(); // Clear 메소드 호출시 자동 삭제 옵션이 True이면 내부 객체를 자동으로 지웁니다.
delete Obj_List;


다만 TTypedList 의 단점은 Template을 이용하기 때문에 전체적을 컴파일 속도의 저하가 생깁니다.

이것 저것 테스트 해보신후에 사용에 대한 판단을 해주세요
강재호.만해 [greenuri]   2005-08-25 09:15 X
헉 임프님이 복구 시켜놓은 BCBDEV 사이트에 그냥 원문이 있네요 ㅋㅋ
김태선 [cppbuilder]   2008-07-25 12:58 X
TTypedList < TAnObject*> Obj_List = new TTypedList < TAnObject>(true);//

이렇게 되어 있는데
이걸
TTypedList < TAnObject> *Obj_List = new TTypedList < TAnObject>(true);//
로 수정해야 합니다.

+ -

관련 글 리스트
495 [만해] TTypedList 객체를 소개 합니다. 강재호.만해 7292 2005/08/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.