[GCC]Undefined symbol

0

Stworzyłem szablon klasy obsługującej zbiory (miedzy innymi operacje OR, AND, XOR, DIFF). Klasa ta jest wpełni wirtualna:
#v+

template <class Typ>
class Lista
{
protected:
struct Wezel{ Typ * element; struct Wezel * next; };
Wezel * poczatek;
Wezel * koniec;

	void dodaj( const Wezel * );
	
	virtual void usun( const Wezel * ) = 0;
	virtual void put( ostream & ) = 0;
	virtual void get( istream & ) = 0;
	virtual Wezel * wnowy( int, int ) = 0;
	virtual Lista * onowy() const = 0;
	virtual int wcompare( const Wezel * , const Wezel * );
	virtual void wcopy( Wezel *, Wezel * );
public:
	Lista(): poczatek(NULL), koniec(NULL) {};
	virtual ~Lista();
	Lista( const Lista & );
	Lista & operator+( const Lista & ) const;
	Lista & operator-( const Lista & ) const;
	Lista & operator&( const Lista & ) const;
	Lista & operator^( const Lista & ) const;
	friend ostream & operator<<( ostream &, Lista & );
        friend istream & operator>>( istream &, Lista & );

};
#v-

tak to wyglada, oczywiscie metody mam zdefiniowane rowniez w tym samym pliku, i wszystkie raczej działaja poprawnie :) (mam nadzieje)

Postanowilem stowrzyć sobie bazę książek:

typedef struct Book
{
char * autor;
char * tytul;
};

class Books : public Lista<Book>
{
protected:
char * rodzaj;
void usun( const Wezel * );
void put( ostream & );
void get( istream & );
Wezel * wnowy( int tytul, int autor) {
Wezel * nwezel = new Wezel; nwezel -> element = new Book;
nwezel -> element -> tytul = new char[tytul];
nwezel -> element -> autor = new char[autor];nwezel->next = NULL;
return nwezel;}
Lista<Book> * onowy() const { return new Books; }
int wcompare( const Wezel *, const Wezel * );
void wcopy( Wezel *, Wezel * );
public:
Books(): Lista<Book>(){ rodzaj = NULL; };
Books( const Books & lista ):Lista<Book>( lista ) { rodzaj = new char[5]; if( rodzaj == NULL ) return; strcpy( rodzaj, "brak" ); }
~Books();
inline char * show_rodzaj() { return rodzaj; }
};

Wszystko sie kompiluje bez problemu, jednakże podczas linkowania wyskakuje coś takiego:

g++ -ggdb -Wall -Wno-non-template-friend -Wno-deprecated -o zbiory main.o books.o
main.o(.gnu.linkonce.r._ZTV5ListaI4BookE+0x1c):/home/krystian/Projects/Zbiory/src/main.cc:12: undefined reference to Lista<Book>::wcompare(Lista<Book>::Wezel const*, Lista<Book>::Wezel const*)' main.o(.gnu.linkonce.r._ZTV5ListaI4BookE+0x20):/home/krystian/Projects/Zbiory/src/main.cc:12: undefined reference to Lista<Book>::wcopy(Lista<Book>::Wezel*, Lista<Book>::Wezel*)'
collect2: ld returned 1 exit status
make: *** [zbiory] Błąd 1

Nie umiem sobie z tym poradzić. Czy ktoś moglby udzielić mi jakiejść wskazówki ?
Przepraszam za obszerność tego postu, ale zależało mi by być dokładnym.

Pozdrawiam
Krystian

0

O poradziłem sobie glupie niedopatrzenie. Przepraszam za kłopot.

Pozdrawiam
Krystian

0

A tak na marginesie....
Co dokładnie oznacza błąd tego typu ??

Pozdrawiam
Krystain

0

Ten blad oznacza ze linker nie moze znaleŹĆ symboly (funkcji, zmiennych) w zlinkowanych plikach programu aby stworzyc program.

1 użytkowników online, w tym zalogowanych: 0, gości: 1