![]() | Programming Guide | WideStudio/MWT Index Table of contents |
获取指向特定类的指针
在使用特定类的API时,必须获得该类的指针。获取特定类的指针的方法的说明如下。通过WSCbase::cast()成员函数获取类指针的例子如下所示。 其中object 指向WSCvtoggle 类实例的指针。通过WSCvtoggle类的 成员函数setStatus()控制互斥按钮的选择状态。
- 通过WSCbase类的cast()成员函数
获取类指针的API 功能 void* WSCbase::cast(char* className) 返回指定类名称的指针
在C++中,通常允许向基类的类型转换,但不允许将基类转换为子类。 WSCbase类的cast()函数弥补了这个缺陷。#include通过WSCbase类的cast()函数,可以获得指向其所有不同子类对象的指针。//直接访问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(); } }
但是如果指定的类不是指定基类的子类,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类或者子类的对象! } }
Copyright(C) WideStudio/MWT Development Team, 1999-2005 | Last modified: Jul 31, 2005 |