title: C++ inheritance not inheriting grandfather file
body: <p>recently I tried to tackle C++ inheritance and polymorphism, but I have a few problems that make no sense to me.
  I have 2 headers in separate files and a cpp file with an implementation. A short summary of my code is as follows:</p>
  
  <pre><code>#ifndef MANDEL_H_
  #define MANDEL_H_
  
  class Mandel{
  
  public:
      virtual void compute("various arguments") = 0;
  
      //dummy destructor, I must have one or compile is sad and I dunno why
      virtual ~Mandel();
  private:
      virtual int compute_point("various arguments") = 0;
  };
  
  #endif
  </code></pre>
  
  <p>This is my "grandfather" header called "Mandel.h". Now Moving to the "father" header. This next header specifies a few variables that are specific to a white and black implementation of Mandel and is called "Black_White_Mandel.h":</p>
  
  <pre><code>#ifndef BLACK_WHITE_MANDEL_H_
  #define BLACK_WHITE_MANDEL_H_
  
  #include "Mandel.h"
  
  class Black_White_Mandel: public Mandel {
  
  protected:
      int max_iterations; //a specific variable of this Black_White Version
  };
  
  #endif
  </code></pre>
  
  <p>And now follows an implementation of the Black_White_Mandel header, in a separate file called White_Black_Mandel_Imp1.cpp:</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;unistd.h&gt;
  #include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  #include "Mandel.h"
  #include "Black_White_Mandel.h"
  
  using namespace std;
  
  //constructor
  Black_White_Mandel::Black_White_Mandel(){
      max_iterations = 255;
  }
  
  //destructor
  Black_White_Mandel::~Black_White_Mandel(){}
  
  int Black_White_Mandel::compute_point("various arguments") {
      //code and stuff
      return 0;
  }
  
  void Black_White_Mandel::compute("various arguments") {
       //code and stuff
  }
  </code></pre>
  
  <p>So, Mandel.h has 2 functions are must be implemented because they are virtual and "=0". In White_Black_Mandel_Imp1.cpp when I implement those functions that compiler goes nuts. It says the functions are not defined in the White_Black_Mandel.h and although that is true, they are defined in Mandel.h. So, by inheritance, White_Black_Mandel_Imp1.cpp should know that it HAS THE OBLIGATION of implementing these functions from Mandel.h. </p>
  
  <p>I don't understand, one of my friends says that my White_Black_Mandel.h file should be an exact copy of Mandel.h but with a few additional things, but this really looks stupid to me, it makes no sense. </p>
  
  <p>What am I doing wrong?</p>