WideStudio/MWT Logo
WideStudio/MWT
Programming Guide
WideStudio/MWT Index
Table of contents


获取指向特定类的指针

在使用特定类的API时,必须获得该类的指针。获取特定类的指针的方法的说明如下。 通过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.90 for WideStudio/MWT ver 3.90, Jul 2005


WideStudio/MWT documents index | Table of contents

Copyright(C) WideStudio/MWT Development Team, 1999-2005 Last modified: Jul 31, 2005