Salve a tutti, sto cercando di fare una semplice classe in c++ (uso il devc++). Ho un file main e un file heap.cpp che includo (che contiene definizione ed implementazione dei metodi della classe heap). Quando vado a compilare ricevo l'errore "multiple definitions di X" (dove X è il nome d ogni metodo implementato nel file heap.cpp.
Non riesco a capire l'errore perché è come se mi includesse più roba. Vi posto il codice:

codice:
main.cpp

#include <iostream>

#ifndef _STDLIB_H_
#include <stdlib.h>
#endif

#ifndef Heap_h
#include "heap.cpp"
#endif


using namespace std;

//int getParent(int * ptrArray,int iElementPos);



int main(int argc, char *argv[])
{

srand(time(0));
Heap h;



  int i;
  int j;
/*  int arrT[MAX_ARRAY];
  for(i=1; i < MAX_ARRAY+1; i++)
  {
//    arrT[i]= MIN_RAND + rand() % MAX_RAND;
//    j=getParent(arrT,i);

    cout << "Figlio: " << i<< " " << arrT[i] << endl;
    cout << "Padre: " << j << " " <<  arrT[j] << endl;
    cout << endl;
    cout << endl;
*/
    
//  }
  
  
  system("PAUSE");	
  return 0;
}

heap.cpp

#ifndef Heap_h
#define Heap_h 1

#ifndef _STDLIB_H_
#include <stdlib.h>
#endif


#define MAX_RAND 1000
#define MIN_RAND 0
#define MAX_ARRAY 10




class Heap{

public:

  int arrHeapValues[MAX_ARRAY+1];
  
  Heap( );
  void initHeap();
  int getParent(int iElementPos);
  int getParentPosition(int iElementPos);

};


Heap::Heap( ){

    int i;
    for    (i=1; i < MAX_ARRAY+1; i++){
           arrHeapValues[i]= MIN_RAND + rand() % MAX_RAND;
    }
}


int Heap::getParent(int iElementPos){

    int iParent =0;
    
    if    (iElementPos==1){
          iParent=1;            
    }else{
          iParent=(int)((iElementPos)/2);
    }

    return arrHeapValues[iParent];

}

#endif
lasciate perdere le sezioni commentate ora vorrei semplicemente compilare senza ricevere errori. Per adesso la funzione main deve soltanto instanziarmi l'oggetto, quella parte commentata sarà tolta!
Mi date una mano? Di c++ ne capisco poco ma immagino che per una persona con un pò d esperienza questo sia un errore stupido. Io purtroppo sul web non ho trovato niente che facesse al caso mio...