#include <iostream.h>
class Data
{
private:
int y;
static int x;
public:
void SetData(int value) {y = value; return;};
int GetData() {return y;};
static void SSetData(int value) {x = value; return;};
static int SGetData() {return x;};
};
int Data::x = 0;
void main(void)
{
Data mydata, mydata2;
// Initialize pointer.
void (Data::*pmfnP)(int) = &Data::SetData; // mydata.SetData;
// Initialize static pointer.
void (*psfnP)(int) = &Data::SSetData;
mydata.SetData(5); // Set initial value for private data.
cout << "mydata.data = " << mydata.GetData() << endl;
(mydata.*pmfnP)(20); // Call member function through pointer.
cout << "mydata.data = " << mydata.GetData() << endl;
(mydata2.*pmfnP)(10) ; // Call member function through pointer.
cout << "mydata2.data = " << mydata2.GetData() << endl;
(*psfnP)(30) ; // Call static member function through pointer.
cout << "static data = " << Data::SGetData() << endl ;
}