Zeiger auf Elemente einer Klasse

Will man Pointer auf Elemente einer Klasse definieren, muß man beachten, daß zum Type eines Elemenst auch sein Klassenname gehört. So ist die Zuweisung
  class X { public: int x; void f(); void g();};
  X x;

  int* j = &(x.j);  // Fehler: &(x.j) vom Typ int X::*
  void (*g)();
  g = x.f;          // Fehler: x.f vom Typ void (X::*)()
nicht zulässig. Vielmehr muß ein Typ definiert werden, der den Klassennamen enthät. Explizites Casting ist dann möglich.
  typedef int X::* pXint;    // Zeiger auf int-Element der Klasse X
  pXint y = x.i; 
  typedef void (X::*pF)();   // Zeiger auf Funktion ohne Parameter mit
                             // Rueckgabewert void der Klasse X
  pF G = x.f;
Funktionsaufrufe geschehen dann mit den Operatoren .* und ->*
  X a, *b = new X;           // a ist vom Typ X, b ist Zeiger auf X
  (a.*G)();              // Aufruf von a.f(); (Umschliessende Klammer wichtig)
  g = x.G;
  (b->*G)();             // Aufruf von b->g();