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:
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!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
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...


Rispondi quotando