1 class B { 2 public: 3 int bi; bProc(void)4 void bProc ( void ) { bi = 39; } 5 }; 6 7 class D : public B { 8 public: 9 int di; dProc(void)10 void dProc (void ){ di = 42; } 11 }; 12 13 typedef void (B::*BPROC)(void); 14 typedef void (D::*DPROC)(void); 15 16 union AFX_PMSG { 17 public: 18 AFX_PMSG()19 AFX_PMSG () {}; AFX_PMSG(BPROC bpr)20 AFX_PMSG ( BPROC bpr ) { bfn = bpr ; } 21 BPROC()22 operator BPROC() { return bfn; } 23 24 BPROC bfn; 25 DPROC dfn; 26 }; 27 28 main(int argc,char * argv[])29int main(int argc, char *argv[]) { 30 B b; 31 D d; 32 33 BPROC bpr = &B::bProc; 34 AFX_PMSG pmsg(bpr); 35 36 BPROC ppr = pmsg; 37 38 return 0; 39 } 40