esta dirección de puntero y función miembro

Estoy tratando de obtener la dirección de una función miembro, pero no sé cómo. Agradecería que alguien me dijera lo que estoy haciendo mal. Como puede ver en mi ejemplo a continuación, ni (long) & g ni (long) & this-> g funcionan y no puedo encontrar la sintaxis correcta:

/* Create a class that (redundantly) performs data member selection
 and a member function call using the this keyword (which refers to the
 address of the current object). */

#include<iostream>
using namespace std;

#define PR(STR) cout << #STR ": " << STR << endl;

class test
{
public:
    int a, b;
    int c[10];
    void g();
};

void f()
{
    cout << "calling f()" << endl;
}

void test::g()
{
    this->a = 5;
    PR( (long)&a );
    PR( (long)&b );
    PR( (long)&this->b );       // this-> is redundant
    PR( (long)&this->c );       // = c[0]
    PR( (long)&this->c[1] );
    PR( (long)&f );
//  PR( (long)&g );     // this doesn't work
//  PR( (long)&this->g );       // neither does this

    cout << endl;
}

int main()
{
    test t;
    t.g();
}

¡Gracias por adelantado!

¡Gracias por su respuesta! Sin embargo, todavía no consigo que funcione. Si cambio la linea

PR( (long)&g );

a

PR( (long)&test::g );

, todavía no funciona.

PR( &test::g );

funciona en main (), pero no

PR( (long)&test::g );

???

Creo que me estoy perdiendo algo. :(

Respuestas a la pregunta(2)

Su respuesta a la pregunta