Friday, February 5, 2010

What is pointer to member?

not to a specific instance of that member in an object. This type of pointer is called a pointer to a class member or a pointer-to-member. It is not same as normal C++ pointer. Instead it provides only an offset into an object of the member’s class at which that member can be found. Since member pointers are not true pointers, the . and -> can not be applied to them. Instead we must use the special operators .* and ->* . They allow access to a member of a class.
Example:
#include
using namespace std;
class MyClass
{
       public:
               int val;
               MyClass(int i)
               {
                       val = i;
               }
               int double_val()
               {
                       return val + val;
               }
};
int main()
{
           int MyClass::*data;         //data member pointer
           int(MyClass::*func)();     //function member pointer
           MyClass obj1(1), obj2(2);       //create objects
           data =&MyClass::val;        //get offset of data val
           func=&MyClass::double_val; //get offset of function double_val()

cout << “The values are:”;
cout << ob1.*data << “ “ <<< “\n”;
cout<< “Here they are doubled:”;
cout << (ob1.*func)() << “ “ <<(ob2.*func)()<< “\n”;

return 0;
}

Here data and func are member pointers. As shown in the program, when declaring pointers to members, you must specify the class and use the scope resolution operator.

0 Comments: