title: Pointer to incomplete class type is not allowed
body: <p>For some reason I cannot use functions attached to the object I want to use. I added a comment to the line that is not working. As an error I get "Error; pointer to incomplete class type is not allowed" Please help</p>
  
  <p>This is code in dokter.ccp</p>
  
  <pre><code>int counter = 0;        
  for (list&lt;Wielrenner*&gt;::iterator it = wielrenners.begin(); it != wielrenners.end(); it++){
      Wielrenner* wielrennerOB = *it;
      cout &lt;&lt; "\nID: " &lt;&lt; counter;
      cout &lt;&lt; "List size: " &lt;&lt; persons.size() &lt;&lt; endl;
  
      wielrennerOB-&gt;print();  // This is not working
      counter++;
   }  
  </code></pre>
  
  <p>This is code in wielrenner.h</p>
  
  <pre><code>#ifndef WIELRENNER_H_
  
  #define WIELRENNER_H_
  
  //#include &lt;fstream&gt;
  
  #include "persoon.h"
  
  #include "Onderzoek.h"
  
  class Wielrenner :
  public Persoon
  {
  public:
      Wielrenner(string, string, Adres, string, Datum, Datum, string, int, float, float, float,list&lt;Onderzoek&gt;* );
      ~Wielrenner(void);
      int     getLengte() const;
      float   getGewicht() const;
      float   getVo2max() const;
      float   getMaxVermogen() const;
      list&lt;Onderzoek&gt; getOnderzoekenList();
  
      void    setLengte(int);
      void    setGewicht(float);
      void    setVo2max(float);
      void    setMaxVermogen(float);
      void    voegOnderzoekToeList(Onderzoek);
      void    showOnderzoeksList();
      void    setOnderzoeksLijst(list&lt;Onderzoek&gt;&amp;);
      void    print();
      void    printFile(ofstream&amp;);
  
  
  private:
  int     lengte;
  float   gewicht;
  float   vo2max;
  float   maxVermogen;
  list&lt;Onderzoek&gt; onderzoeken;
  };
  
  #endif /* WIELRENNER_H_ */
  </code></pre>
  
  <p>code in wielrenner.CCP</p>
  
  <pre><code>using namespace std;
  #include &lt;string&gt;
  
  #include "Wielrenner.h"
  /*
  #include "Onderzoek.h"
  
  */
  Wielrenner::Wielrenner(string voornaam, string achternaam, Adres adres, string telefoon, Datum datumInDienst, Datum geboorteDatum, 
                      string persoonType, int lengte, float gewicht, float vo2max, float maxVermogen,list&lt;Onderzoek&gt;* onderzoeken)
          : lengte(lengte), 
      gewicht(gewicht), 
      vo2max(vo2max), 
      maxVermogen(maxVermogen),
      Persoon(voornaam, achternaam, adres, telefoon, datumInDienst, geboorteDatum, persoonType)
  {
  }
  
  
  Wielrenner::~Wielrenner(void)
  {
  }
  
  //setten van gegevens
  void    Wielrenner::setLengte(int newLengte){
  lengte = newLengte;
  }
  void    Wielrenner::setGewicht(float newGewicht){
  gewicht = newGewicht;
  }
  void    Wielrenner::setVo2max(float newVo2max){
  vo2max = newVo2max;
  }
  void    Wielrenner::setMaxVermogen(float newMaxVermogen){
  maxVermogen = newMaxVermogen;
  }
  void    Wielrenner::voegOnderzoekToeList(Onderzoek newOnderzoek){
  onderzoeken.push_back(newOnderzoek);            
  }
  
  void    Wielrenner::showOnderzoeksList(){
  int teller=0;
  
  for (list&lt;Onderzoek&gt;::iterator it = onderzoeken.begin(); it != onderzoeken.end();     it++){
      Onderzoek onderzoekOB = *it;
      cout &lt;&lt; teller &lt;&lt; " - ";
      onderzoekOB.print();
      teller++;
   }  
  }
  
  void    Wielrenner::setOnderzoeksLijst(list&lt;Onderzoek&gt;&amp; newOnderzoeksLijst){
  onderzoeken = newOnderzoeksLijst;
  }
  
  void    Wielrenner::print(){
  
  cout &lt;&lt; "(" &lt;&lt; persoonID &lt;&lt; ") Persoon: " &lt;&lt; endl;
  cout &lt;&lt; persoonType &lt;&lt; endl;
  cout &lt;&lt; voornaam &lt;&lt; " " &lt;&lt; achternaam &lt;&lt; endl;
  adres.print();
  cout &lt;&lt; telefoon &lt;&lt; endl;
  cout &lt;&lt; "Datum in dienst: ";
  datumInDienst.print();
  cout &lt;&lt; "Geboortedatum: ";
  geboorteDatum.print();
  cout &lt;&lt; "&gt; Extra wielrenner gegevens: " &lt;&lt; endl;
  cout &lt;&lt; "Lengte: " &lt;&lt; lengte &lt;&lt; endl;
  cout &lt;&lt; "Gewicht: " &lt;&lt; gewicht &lt;&lt; endl;
  cout &lt;&lt; "vo2max: " &lt;&lt; vo2max &lt;&lt; endl;
  cout &lt;&lt; "maxVermogen: " &lt;&lt; maxVermogen &lt;&lt; endl;
  }
  void Wielrenner::printFile(ofstream &amp;myfile){
  
  myfile &lt;&lt;  persoonID &lt;&lt; "\n";
  myfile &lt;&lt; persoonType &lt;&lt; "\n";
  myfile &lt;&lt; voornaam &lt;&lt; " " &lt;&lt; achternaam &lt;&lt; "\n";
  adres.printFile(myfile);
  myfile &lt;&lt; telefoon &lt;&lt; "\n";
  datumInDienst.printFile(myfile);
  geboorteDatum.printFile(myfile);
  myfile &lt;&lt; lengte &lt;&lt; "\n";
  myfile &lt;&lt; gewicht &lt;&lt; "\n";
  myfile &lt;&lt; vo2max &lt;&lt; "\n";
  myfile &lt;&lt; maxVermogen &lt;&lt; "\n";
  }
  // returnen van gegevens
  
  int     Wielrenner::getLengte() const{
  return lengte;
  }
  float   Wielrenner::getGewicht() const{
  return gewicht;
  }
  float   Wielrenner::getVo2max() const{
  return vo2max;
  }   
  float   Wielrenner::getMaxVermogen() const{
  return maxVermogen;
  }
  list&lt;Onderzoek&gt; Wielrenner::getOnderzoekenList(){
  return onderzoeken;
  }
  </code></pre>