PDA

View Full Version : [C++] template ed errori


soulinafishbowl
28-10-2005, 01:28
ciao a tutti

sto sistemando un programma composto da più classi, più file e più template.
ho appena diviso un file unico file.cpp contenente una definizione di classe, un template che la estende, main(). L'ho diviso in un file.hpp con la dichiarazione della classe e del template; un file.cpp con le funzioni; un file main.cpp col main.

Prima funzionava, adesso invece mi dice:

g++ -o main main.o Simulation.o
main_noview.o(.text+0x623): In function `main':
: undefined reference to `Sim<NomeClasse>::Sim[in-charge](int, long*, RNG&, RNG&, char*)'
collect2: ld returned 1 exit status
make: *** [mainnw] Error 1


NB: Simulation è il nome della classe, Sim<T> quello del template.
NB: i singoli file vengono compilati, è il linkaggio che fallisce.

La mia domanda è: cosa significa "undefined referenceto..."?

ri
28-10-2005, 09:54
purtroppo tutto il codice relativo al template, corpo delle funzioni incluso, deve essere scritto all'interno del .h

se vuoi comunque separare il .h e il .cpp devi usare un "trucco", ovvero nel .cpp NON metti l'include, invece nel .h AL FONDO DEL FILE metti #include "file.cpp"
però fa un po' schifo :p

soulinafishbowl
29-10-2005, 00:23
ci provo, poi ti faccio sapere.
grazie