This question is similar to 
[Print address of virtual member function](https://stackoverflow.com/questions/3068144/print-address-of-virtual-member-function)

I would like to retrieve the memory location of a function (in runtime), using a member function pointer. The goal is to log them, and do a post-mortem analysis, using 'ln' in WinDbg to retrieve which function it was, using PDB symbols.

I can't use stack walking since I am not yet into the function I want to log.
(and I do not want to modify billions of functions to return me their address...).

Short sample:

```
class AClass
{
public :
   virtual AFunction(){;}

};

typedef void (AClass::*FxPtr)( void );

[...]
    AClass oAClass;

    AClass*  pSelf = &oAClass;
    FxPtr    pf    = &AClass::AFunction;

    DWORD nFctAddress = ???

```

Anyone has an idea how I can retrieve the address ?

```
&(pSelf->*pf)

```

gives 'error C2298: '&' : illegal operation on pointer to member function expression'

I know that member function pointers are 'weird' structures, but since I know the 'this', is there a way to look-up the potentially virtual function from the vtable ?

Regards,

refs: 

* [Member Function Pointers](http://www.codeproject.com/kb/cpp/FastDelegate.aspx)
* [Pointers to member functions are
very strange animals](http://blogs.msdn.com/b/oldnewthing/archive/2004/02/09/70002.aspx)