Domanda: come risolvo il seguente errore? e perché si genera?
Compilatore GNU GCC Compiler vi riporto il codice nei rispettivi file:
La compilazione mi riporta il seguente messaggio di errore rilevato nel file main.cpp alla riga dove è scritto obj <int> a( 1 ); dicendo:
undefined reference to 'obj<int>::obj(unsigned int)'
error: 1d returned 1 exit status
nota:
Scrivendo le definizioni nel file header.h (e quindi escludendo il file hr.cpp) funziona. Ma esiste un altro modo?
Compilatore GNU GCC Compiler vi riporto il codice nei rispettivi file:
C++:
//file header.h
#ifndef H
#define H
template <class T> class obj {
public:
obj( unsigned int );
};
#endif // H
C++:
//file hr.cpp
#include "header.h"
template <class T> obj<T>::obj( unsigned int ) {}
C++:
//file main.cpp
#include "header.h"
int main() {
obj <int> a( 1 );
return 0;
}
La compilazione mi riporta il seguente messaggio di errore rilevato nel file main.cpp alla riga dove è scritto obj <int> a( 1 ); dicendo:
undefined reference to 'obj<int>::obj(unsigned int)'
error: 1d returned 1 exit status
nota:
Scrivendo le definizioni nel file header.h (e quindi escludendo il file hr.cpp) funziona. Ma esiste un altro modo?