Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore in fase di link
Forum - C/C++ - Errore in fase di link

Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:04
Mercoledì, 02/12/2009
Non riesco a capire dove si trova l'errore che g++ mi segnale in fase di link...

L'errore è questo:

lorenzo@notebook:~/Scrivania/Mate$ g++ func_pars.o maintest.o -o app
maintest.o: In function `main':
maintest.cpp: (.text+0x75): undefined reference to `function_parser<double>::function_parser()'
maintest.cpp: (.text+0x85): undefined reference to `function_parser<double>::~function_parser()'
collect2: ld returned 1 exit status

l'ho compilato e linkato da console perché anche eclipse me lo dava come errore e per sicurezza ho voluto provare una strada alternativa.

Il problema si presenta quando tento di creare la classe nel file maintest.cpp.

Allora, i tre file in questione sono questi(li zippo e li allego):




lorenzo ha allegato un file: Mate.zip (1810 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da lorenzo il 02/12/2009 alle 11:04


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1787
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 12:35
Mercoledì, 02/12/2009
prova a mettere nell'header questa piccola modifica all'inizio...

Codice sorgente - presumibilmente C++

  1. #include <string>
  2. #include <exception>
  3. #include <map>
  4.  
  5. using namespace std;
  6.  
  7. template <class T>
  8. class function_parser<T> // <<<-- MODIFICA
  9. {
  10. public:
  11. // ... ecc...



Non l'ho provata, ma credo che dovrebbe andare bene...


Software Failure: Guru Meditation
Forum su Informatica, Elettronica, Robotica e Tecnologia: http://www.nonsoloamiga.com
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 15:35
Mercoledì, 02/12/2009
purtroppo in quel modo mi da l'errore:

"function_parser is not a template"

in fase di compilazione. Giustamente, aggiungo, dato che quella sintassi se non erro si usa nella specializzazione delle classi template. Comunque grazie per il suggerimento...devo venirne a capo perché ormai è una questione di orgoglio professionale :yup:


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1787
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 16:48
Mercoledì, 02/12/2009
Ci sono... :D

la classe template non può essere compilata "di per se", assume significato solo se specializzata. Quindi il compiler non genera alcun object file per il func_pars.cpp!
La soluzione sta nel mettere dichiarazione ed implementazione dentro il func_pars.h!

E' come quando usi delle macro, devi dichiararle nel .h perchè la macro di per se non può essere compilata, è la stessa cosa anche qui ;)

PS: Stavolta ho provato a compilare e funziona :)

Ultima modifica effettuata da TheKaneB il 02/12/2009 alle 16:49


Software Failure: Guru Meditation
Forum su Informatica, Elettronica, Robotica e Tecnologia: http://www.nonsoloamiga.com
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 18:54
Mercoledì, 02/12/2009
sai che sono un idiota? :-|
sapevo benissimo sta cosa ma me ne sono completamente dimenticato...assurdo

comunque grazie mille per l'aiuto :k:


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote