| WideStudio Programming Guide | WideStudio Index Table of contents

> ## 특정한 객체 클래스의 포인터를 취득하기에는

> 특정한 클래스의 API에 접근(access)할 경우, 그 클래스의 포인터여야 합니다. 따라서 어떤 방법으로서 그 클래스형의 포인터를 취득해있서야합니다. 여기서는 그 클래스형 포인터의 취득 방법을 설명합니다.
> - WSCbase 클래스의 cast() 멤버 함수에의한 취득

>   클래스 포인터 취득API | 기능
>   void* WSCbase::cast(char* className) | 지정된 클래스명의 포인터값을 돌립니다.

> WSCbase::cast() 멤버 함수에의한 클래스 포인터의 취득을 설명합니다. object 가 WSCvtoggle 클래스의 객체로, 토글의 선택상태를 알아차릴 WSCvtoggle 의 멤버 함수 setStatus() 에 접근(access)할 경우의 예입니다.
> C++ 언어에서는 보통, 파생원에로의 형변환은 가능하나, 파생원에서, 파생 클래스에로의 형변환은 지원되지안습니다.WSCbase 클래스의 cast() 함수 는,그 기능을 보관합니다.

>     #include <WSCvtoggle.h> //WSCvtoggle  클래스를 직접 접근(access)하기에.
>     ...

>     void cbop(WSCbase* object){
>       //WSCvtoggle  클래스의 getStatus()  함수에대한 접근(access)(1)
>       WSCvtoggle* tgl = (WSCvtoggle*)object->cast("WSCvtoggle");

>       if (tgl == NULL){
>         //object 가,WSCvtoggle  클래스의 인스턴스가아니므로 형변환에 실패.
>       }else{
>         //object 가,WSCvtoggle  클래스의 인스턴스이므로 형변환에 성공.
>         WSCbool status = tgl->getStatus();
>       }
>     }

> cast() 함수는 인스턴스가 가지는 모든 계승 클래스의 포인터를 취득 할수 있습니다.
> 그러나, 계승에 보함되지안은 형을 지정하면 NULL 가 돌아옵니다. 이 기능을 바로 사용하며는, 다음의 이벤트 프로시저처럼 클래스의 판별에 응용할수 있습니다..

>     #include <WSCvbtn.h> //WSCvbtn  클래스에 직접 접근(access)하기에.
>     #include <WSCvtoggle.h> //WSCvtoggle  클래스에 직접 접근(access)하기에.
>     ...

>     void cbop(WSCbase* object){
>       //WSCvbtn  클래스를 계승하는 클래스의 객체를 판별
>       WSCvbtn* btn = (WSCvbtn*)object->cast("WSCvbtn");

>       //WSCvtoggle  클래스를 계승하는 클래스의 객체를 판별
>       WSCvtoggle* toggle = (WSCvtoggle*)object->cast("WSCvtoggle");

>       if (btn == NULL){
>         //WSCvbtn  클래스와 아무 관계없는 클래스의 객체다!
>       }else{
>         //WSCvbtn  클래스가아니면 WSCvbtn  클래스를 계승하는 클래스다!
>       }
>       if (toggle == NULL){
>         //WSCvtoggle  클래스와 아무 관계없는 클래스의 객체다!
>       }else{
>         //WSCvtoggle  클래스가아니면 WSCvtoggle  클래스를 계승하는 클래스다!
>       }

>     }

> 서로다른 클래스의 복수의 객체/ 클래스에 걸쳐서 사용되는 이벤트 프로시저에 있어서, 클래스를 판별하는데 별리합니다.

Document Release 3.70 for WideStudio ver 3.70, May 2004

WideStudio documents index | Table of contents

Copyright(C) WideStudio Development Team, 1999-2004 | Last modified: May 25, 2004