首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个指针的显式类型转换有关问题

2012-09-13 
一个指针的显式类型转换问题有如下一段代码:C/C++ code#include iostream.hclass TClassA{public:void D

一个指针的显式类型转换问题
有如下一段代码:

C/C++ code
#include <iostream.h>      class TClassA   {   public:      void Display(const char* text) { cout << text << endl; };      static void Wrapper_To_Call_Display(void* pt2Object, char* text);      // more....   };   // 静态包装函数,能够调用成员函数Display(),本身做为回调函数来使用   void TClassA::Wrapper_To_Call_Display(void* pt2Object, char* string)   {      // 显式类型转换       TClassA* mySelf = (TClassA*) pt2Object;       // 调用普通成员函数       mySelf->Display(string);   }   // 回调函数的宿主,在这里回调用函数被使用   void DoItA(void* pt2Object, void (*pt2Function)(void* pt2Object, char* text))   {      // 使用回调函数      pt2Function(pt2Object, "hi, i'm calling back using a argument ;-)");    }// 执行示例   void Callback_Using_Argument()   {      TClassA objA;      DoItA((void*) &objA, TClassA::Wrapper_To_Call_Display);//此行void*??????   }

是关于“用静态成员函数对非静态成员函数包装的办法来解决‘类成员函数用做C回调函数’的问题”
请问最后那条代码中的(void*)是怎么来的?显式类型转换?&objA已经取了地址了。我看以前书中好像直接写成&objA就可以了。请指教。。。。。!!

[解决办法]
直接写成&objA就可以,指针类型之间的转化有这样一种规则:任何指针类型都可以隐式转化成void *类型,不需要使用c风格的强制类型转化。
[解决办法]
C/C++ code
(void*) &objA;//可以去掉强制类转换如果可以隐式转换 

热点排行