请教D语言编程方法问题
|
whoareu
2008-04-25
在从C++转到D语言学习时,发现这么一个问题:
对于windows编程,很多功能需要向采用回调函数与操作系统进行交流,例如: Timer 功能,采用类进行封装时,对于C++可以采用以下模式: class MyTimer { Create() { UINT hTimer=TimeSetEvent(, , timerproc, (DWORD)this, ..); //将this指针作为自定义参数传到timerproc回调函数中。 ..... } static timerproc( , , DWORD dwuser, ,, ) { //取回传给的this指针,以便进行实例操作 MyTimer *P =(MyTimer *)dwuser; p->MyFunc(); ..... } void myFunc() ..... } 可是在D语言中,根据文档说明,类的指针不能这么进行转换和使用,想请教大家有什么好的封装方式,难道非得建一个指针表来进行查询?我强行使用指针转换,发现根本不行。 |
|
|
Colorful
2008-04-26
请参考http://www.digitalmars.com/d/2.0/function.html中Delegates, Function Pointers, and Closures章节
|
|
|
oldrev
2008-04-26
跟C++差不多的嘛
被 Windows 回调的函数应该声明为 extern(system) static void func(); 转型用 cast(T)(value) |

