저도 잘모르는 초봅니다만,
base class타입의 포인터 Sender를 파생클래스 TMenuItem 타입의 포인터로 캐스트하기위해서는
dynamic_cast를 아래와 같이 쓰시면 될거 같습니다.
TMenuItem* Mitem = dynamic_cast<TMenuItem *>(Sender);
funji 님이 쓰신 글 :
: 지금 제가 델파이에서 빌더로 소스를 변환중인데요..
: 델파이에서 as연산자를 dynamic_cast를 이용하면된다는 글을 보고 이렇게 변환을 해봤는데
: < expected 라는 에러구문이 나오더라구요...ㅠㅠ
: MmcPopupMenuItemClick()는 이벤트는 아니구요,,,
: 제가 따로 만든 함수입니다.
: dynamic_cast연산자 예시는를 게시판에서 보면 이벤트에서 적용을 하셨던데...
: 사용자가 만든 함수에서는 dynamic_cast연산자를 못쓰는건가요???
: 아님 dynamic_cast를 쓸대 헤더 파일이 필요한건가요???
:
:
:
: //C++ Builber
: void __fastcall TfmMain::MmcPopupMenuItemClick(TObject* Sender)
: {
: //델파이 as연산자 대체 방법 'dynamic_cast'
: //실패 - NULL 반환
: TMenuItem* Mitem = dynamic_cast(Sender);
: if (Mitem)
: {
: DispPos[iCrtType].CrtPg = GetMenuItemNum(Mitem->Name);
: }
: }
:
:
: //델파이
: procedure THomeForm.MmcPopupMenuItemClick(Sender: TObject);
: begin
: //GD^.MmcPage.sMItemCap := (Sender as TMenuItem).Caption;
: //ShowMimicCrtPage(GetMenuItemNum((Sender as TMenuItem).Name));
: DispPos[iCrtType].CrtPg := GetMenuItemNum((Sender as TMenuItem).Name);
: end;
: