title: Cannot declare variable to be of abstract type because the virtual functions are pure - with multiple inheritance
body: <p>I have seen multiple answers for this kind of problem but I don't get how to resolve it. The main problem is probably that I'm working on someone else's code, but meh. Here is a reduced sample for this problem:
  I have one class that links many other classes:</p>
  
  <pre><code>class Interface
    : public system_atoms,
      public system_io,
      /* etc, others */
  {
  /* A few functions, none that matters here - none from the inherited classes redefined */
  }
  </code></pre>
  
  <p>Inside system_atoms, I have:</p>
  
  <pre><code>class system_atoms {
  public:
      virtual int init_atom(int atom_number) = 0;
      virtual int check_atom_id(int atom_number) = 0;
  }
  </code></pre>
  
  <p>And I have a class that should inherit from Interface:</p>
  
  <pre><code>class Interface_proxy : public Interface {
  public: 
  /* stuff - no function from the inherited classes redefined */
  }
  </code></pre>
  
  <p>In the .cpp:</p>
  
  <pre><code>Interface_proxy global_interface_proxy;
  </code></pre>
  
  <p>Compilation brings an error stating "<em>Cannot declare variable <code>global_interface_proxy</code> to be of abstract type <code>Interface_proxy</code> because the virtual functions [the two listed in system_atoms] are pure</em>".</p>
  
  <p>I'm not really proficient in c++ either. I guess that I should redefine the two virtual functions as pure (the same without the <code>= 0</code> and the <code>virtual</code> right ?) somewhere so that the variable isn't of abstract type. But my knowledge stops there - and the multiple inheritance just confuses me.</p>