// MT2Q7.cpp - pointer to member #include #include class Widget { public: Widget(const std::string& name) : _name(name) {} std::string say() const { return "I am a Widget. My name is " + _name; } private: std::string _name; }; class X { public: void say1(const Widget& w) { std::cout << "\n X.say1 using w: " << w.say(); } void say2(const Widget& w) { std::cout << "\n X.say2 using w: " << w.say(); } }; int main() { typedef void(X::*pM)(const Widget& w); Widget w1("Fred"), w2("Joe"); pM pWidgetMember1 = &X::say1; pM pWidgetMember2 = &X::say2; X x; (x.*pWidgetMember1)(w1); (x.*pWidgetMember2)(w2); std::cout << "\n\n"; }