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 }