Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 5.887 pregleda

Najnovija ↓

template problem 09.03.2002. u 19:20 · pre 300 meseci #1
U jednom heder-u sam definisao template class-u:

//file: Matrix.h
template<class T>
class Matrix {
public:
Matrix (int m, int n); //matrica m x n
Matrix (const Matrix<T>&);
~Matrix ();
// i tako dalje....(sledi deklaracija f-ja)

Udrugom fajlu je definicija gore deklarisanih f-ja.
U trecem fajlu sam hteo da vidim kako to sve funkcionise i u main() funkciji sam stavio:
#include "Matrix.h"
int main(){
Matrix<int> mat(3,3);
}

Compailer ne prijavljuje gresku ali linker izbacuje sledecu gresku:
d:\dev-c++\sinisa\matrix\matmain.o: In function `_tf8_IO_FILE':
//d/dev-c++/sinisa/matrix/matmain.cpp:6: undefined reference to `Matrix<int>::Matrix(int, int)'
//d/dev-c++/sinisa/matrix/matmain.cpp:6: undefined reference to `Matrix<int>::~Matrix(void)'
//d/dev-c++/sinisa/matrix/matmain.cpp:6: undefined reference to `Matrix<int>::~Matrix(void)'

U cemu je problem??
Pozdrav.
PS: primer je po knjizi D. Milicev

Re: template problem 09.03.2002. u 20:19 · pre 300 meseci #2
HA,
Pa problem je u tome sto sablomni imaju unutrasnju linkazu.

Znaci da moraju biti potpuno definisani u jedinici prevodjenja(datoteka).

Dakle i definicije funkcija koje koristis moras ukljuciti (#include) u
datoteku u kojoj ih koristis(#include "Matrix.cpp").
Posto imaju unutrasnju linkazu mozes i u vise datoteka
istog projekta ukljuciti istu .cpp datoteku.

Drugo resenje je da deklarises sablone kao export ali
ja nisam naisao na kompajler koji ovo podrzava, ali
je cak prvo resenje efikasnije.

Upozorenje:
Kod sablona vecina gresaka se ne moze pronaci prilikom kompajliranja.
Tako da je najbolje prvo pisati klasu odredjenog tipa, pa
je posle preraditi u sablon.

Pozdrav.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme