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
[24311] Re:[질문]Delphi의 is, as 연산자가 BCB에서는 어떻게?
라다 [rada] 1074 읽음    2003-02-15 13:00
궁금 님이 쓰신 글 :
: 물론 자게에서 질문이 좀 어색하다는건 압니다만
: 아무래도 여기에 많은 분들이 오시니깐 질문드립니다.
:
: 질문그대로 델파이의 is 와 as에 해당하는 C++연산자를 부탁드립니다.
:
: "if TComponent is TEdit then"
: (Sender as TButton)
:
: 타입캐스팅 연산자 같은데 빌더에서 type casting을 하니깐
: 델파이와 같은 제대로 된 결과 값이 나오질 않네요...
: 물론 C++에서는 캐스팅 연산자가 5가지 있는걸로 알고 있습니다.
: dynamic_cast
: static_cast
: reinterpret_cast
: const_cast
: 마지막으로 C에서 사용하는 캐스팅이 있죠
: void * 타입을 (char *)로 바꿀때
: (char *)mem  뭐 이런식이죠...
:
: 고수님들의 답변 부탁드립니다.
: 감사합니다.
:
: ================================
: 참고로
: ************************************************
: * Creating a Client to an External Web Service *
: ************************************************
:
: procedure TForm1.Button1Click(Sender: TObject);
: var
:   BabelService: BabelFishPortType;
: begin
:   BabelService:= HTTPRio1 as BabelFishPortType;
: memo2.Text := BabelService.BabelFish('en_fr', memo1.text);
: end;
: =============================================
: 빌더 시디에 있는 델파이 웹서비스 샘플인데요
: 위의 as를 type casting을 아무리 해봐도
: 실행이 되질 않네요...
:
: 감사합니다.
:
dynamic_cast를 쓰시면 됩니다.
위의 경우에는

BabelService = dynamic_cast<HTTPRio1*>(BabelFishPortType) 정도로 표현 할 수 있으까요?

if TComponent is TEdit then
(Sender as TButton)

이런것은 if(dynamic_cast<TComponent*>(TEdit)) 이런식으로 표현을 하면 됩니다.

다이나믹 캐스트로 할당을 하다가 에러가 발생하면 NULL이 리턴이 되는데 NULL은 false와 같기때문에

is와 as를 모두 쓸수 있는 것이지요. :)

+ -

관련 글 리스트
24310 [질문]Delphi의 is, as 연산자가 BCB에서는 어떻게? 궁금 790 2003/02/15
24311     Re:[질문]Delphi의 is, as 연산자가 BCB에서는 어떻게? 라다 1074 2003/02/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.