#include<iostream>

using namespace std;

class I {
public:
   virtual void play() const
   {  cout << "I::play" << endl; }
};

class W : public I {
public:
   W() : i(33) {}

   void play() const
   {  cout << "W::play" << endl; }

   int i;   // public data member, not a good idea
};

int main()
{
   W flute;

   I* pflute = &flute;
   pflute->play();

   cout << flute.i << endl;
//   cout << pflute->i << endl;   //error
//   cout << (*pflute).i << endl; //error

   return 0;
}
