WideStudio Programming Guide

| WideStudio Programming Guide | WideStudio Index Table of contents

> ## 获取指向特定类的指针

> 在使用特定类的API时，必须获得该类的指针。获取特定类的指针的方法的说明如下。
> - 通过WSCbase类的cast()成员函数

>   获取类指针的API | 功能
>   void* WSCbase::cast(char* className) | 返回指定类名称的指针

> 通过WSCbase::cast()成员函数获取类指针的例子如下所示。 其中object 指向WSCvtoggle 类实例的指针。通过WSCvtoggle类的 成员函数setStatus()控制互斥按钮的选择状态。
> 在C++中，通常允许向基类的类型转换，但不允许将基类转换为子类。 WSCbase类的cast()函数弥补了这个缺陷。

>     #include  //直接访问WSCvtoggle类时需要
>     ...

>     void cbop(WSCbase* object){
>       //使用WSCvtoggle类的getStatus()函数(1)
>       WSCvtoggle* tgl = (WSCvtoggle*)object->cast("WSCvtoggle");

>       if (tgl == NULL){
>         //如果object不是WSCvtoggle类实例指针，类型转换失败。
>       }else{
>         //如果object是WSCvtoggle类实例指针，类型转换成功。
>         WSCbool status = tgl->getStatus();
>       }
>     }

> 通过WSCbase类的cast()函数，可以获得指向其所有不同子类对象的指针。
> 但是如果指定的类不是指定基类的子类，cast()函数返回值为NULL。 因此，灵活运用该函数可以判断对象的类型。

>     #include  //直接访问WSCvbtn类时需要
>     #include  //直接访问WSCvtoggle类时需要
>     ...

>     void cbop(WSCbase* object){
>       //判断对象是否为WSCvbtn类的子类
>       WSCvbtn* btn = (WSCvbtn*)object->cast("WSCvbtn");

>       //判断对象是否为WSCvtoggle类的子类
>       WSCvtoggle* toggle = (WSCvtoggle*)object->cast("WSCvtoggle");

>       if (btn == NULL){
>         //与WSCvbtn类不存在关系的类的对象!
>       }else{
>         //是WSCvbtn类或者子类的对象!
>       }
>       if (toggle == NULL){
>         //与WSCvtoggle类不存在关系的类的对象!
>       }else{
>         //是WSCvtoggle类或者子类的对象!
>       }

>     }

> 如果在事件过程中使用了多种不同类的对象，可以通过上述方法进行识别。

Document Release 3.70 for WideStudio ver 3.70, Feb 2004

WideStudio documents index | Table of contents

Copyright(C) T. Hirabayashi, 2000-2004 | Last modified: Feb 25, 2004