On peut définir des pointeurs sur des membres d'une classe :
class A{ public: void f(int); char a; }; //... int A::* pdm = &A::a; void (X::* pfm)(int) = &A::f A x; //... x.*pdm = 'a'; x.*pfm(4);
pdm
est un pointeur sur un membre de type char
de la classe A
,
et pfm
un pointeur sur une fonction membre de type void(int)
de la classe A
. Par leurs intermédiaires, on pourra accéder aux
membres des objets.
Ce sont deux opérateurs nouveaux :
.*
et ->*
qui sont dans la même classe de
précédence, de priorité juste au-dessus des opérateurs multiplicatifs.