임프랍니다.
Delphi의 is, as 연산자 모두 C++Builder에서는 dynamic_cast 연산자로 해결합니다. dynamic_cast 연산자는
C++Builder에서만 사용되는 비표준 키워드가 아니라 현재 개정중인 새 ANSI/ISO에 제안되어 다음 표준에
추가될 것으로 알고 있습니다. (이런 키워드들로 reinterpret_cast, static_cast 등 몇가지가 있습니다.)
이 dynamic_cast 연산자는 캐스팅이 가능한 경우, 즉 캐스팅하려는 객체가 해당 타입이거나 그 타입으로부터
상속받은 경우 정상적으로 캐스팅하려는 타입의 포인터를 리턴하며, 그렇지 않은 경우에는 NULL을 돌려줍니다.
그러므로 델파이의 is 와 as 연산자를 모두 대치할 수 있습니다.
예를 들어서, 델파이에서 다음과 같이 코딩했다면,
if Sender is TButton then ...
C++Builder에서는 다음과 같이 하면 됩니다.
if(dynamic_cast<TButton *>(Sender)) ...
또한 다음과 같은 코드는..
var
SenderButton: TButton;
...
begin
...
SenderButton := Sender as TButton;
다음과 같이 하면 됩니다.
SenderButton = dynamic_cast<TButton *>(Sender);
그럼 이만...
도움받기 님이 쓰신 글 :
: IS.
: AS.
|