获得成员函数地址

View Code
 1 #include <Windows.h>
 2 
 3 #include <stdio.h>
 4 
 5 template <typename ToType, typename FromType>
 6 void GetMemberFuncAddr_VC6(ToType& addr,FromType f)
 7 {
 8     union
 9     {
10         FromType _f;
11         ToType   _t;
12     }ut;
13     ut._f = f;
14     addr = ut._t;
15 }
16 
17 class A
18 {
19         
20 public: 
21 
22     int m_data;
23 
24 public:
25 
26     virtual void f(){printf("hello world\n");}
27 };
28 
29 
30 int main()
31 {
32 
33     
34     DWORD dwAddr = 0;
35     GetMemberFuncAddr_VC6(dwAddr, &A::f);
36 
37 
38     A a;
39     printf("dwAddr = %p\n", dwAddr);
40     printf("&A::f() = %p\n", &A::f);
41 
42     return 0;
43 }

 

posted on 2013-02-20 01:28  All IN  阅读(216)  评论(0)    收藏  举报

导航