title: C++ : Cannot declare field to be of abstract type
body: <p>I get this error on compile -> cannot declare field M1::sc to be of abstract type I1 because the following virtual functions are pure within I1. Please help.</p>
  
  <pre><code>   class I1
      {    
      public:  
          virtual void a(int dir) = 0;
          virtual void b() = 0; 
          virtual void c() = 0; 
  
          void a(int dir) {  
          ....
          }
  
          void b() {  
          ....
          }
  
          void c() {  
          ....
          }
      };
  
      class I2 : public I1
      {    
      public:  
  
  
          void a(int dir) {  
          ....
          }
  
          void b() {  
          ....
          }
  
          void c() {  
          ....
          }
      }; 
  
      class M1 : public G1
      {
      protected:
      I1 sc;
      public:
         int dir = 4;
         sc.a(dir);
      };
  </code></pre>
  
  <p>Complete code can be found on <a href="http://pastebin.com/PFrMTJuF">http://pastebin.com/PFrMTJuF</a>.</p>