#include using namespace std; struct cl { char *val; char *other_val; void print( int x) { cout << val << x << endl;}; void display( int x) { cout << "display " << x << endl;} static void show( int x); cl(char *v) {val = v;} }; void cl::show( int x) { cout << "display " << x << endl; } struct c2 { char *val; int foo; void print( int x) { cout << val << x << endl;}; }; typedef void (cl::*PMFI) (int ); typedef char * (cl::*STR); int main() { cl z1("z1 "); cl z2("z2 "); cl* p = &z2; PMFI pf = &cl::print; PMFI pd = &cl::display; z1.print(1); (z1.*pf)(2); z2.print(3); (z2.*pf)(4); (z2.*pd)(5); STR pval = &cl::val; cout << "(z1.*pval) = " << (z1.*pval) << endl; // this won't compile //pf = &cl::show; return 0; }