[ ID411 @ 16.01.2010. 22:33 ] @
Trenutno radim zadatak u kojem trebam napraviti genericku klasu skup. Kada sam ga napisao u istom fajlu radi bez problema. Kada ga razdvojim u 3 fajla: skup.h skup.cpp i main.cpp javlja se problem u povezivanju
[Linker error] undefined reference to `Skup<char, 50>::Skup()' i tako za svaku f-ju.
Povezivanje fajlova sam napravio na nacin kako sam i ranije povezivao u drugim programima sa include "skup.h".
Moze li mi neko pomoci posto ne znam da li postoji neka razlika jer je rijec o generickim klasama?

Dio koda izgleda ovako:
Code:

main.cpp
#include <iostream>
#include "skup.h"
#include <string.h>
using namespace std;

main(){
       Skup<char,50> Slova;
             ...
skup.cpp
#include <iostream>
#include "skup.h"
using namespace std;
template <class T, int N>
Skup<T,N>:: Skup () {
                ....
skup.h
#ifndef SKUP_H
#define SKUP_H
#include<iostream>
using std::ostream;
using std::istream;
using namespace std; 

template <class T, int N>
class Skup{
 .....
};
#endif
[ GORSHTAK @ 17.01.2010. 11:59 ] @
Stavi ceo kod, mada probaj ovo, mislim da sam davno imao takvih problema, ne mogu sada da proveravam, posebno ne bez koda

Code:

main.cpp

#include "skup.h"
#include <string.h>
#include <iostream>
using namespace std;
-----

skup.cpp

#include "skup.h"
#include <iostream>
using namespace std; 
------

skup.h
#ifndef SKUP_H
#define SKUP_H
#include<iostream>
using std::ostream;
using std::istream;
using namespace std; 


Ukratko, da ti se #include "skup.h" ne nađe između #include <iostream> i using namespace std;
[ drki89 @ 19.01.2010. 20:48 ] @
Kod genericke klase treba da bude smesten u .h datoteku zato sto se taj kod koristi pri generisanju klase kada se zada konkretni tip. Ako to stavis u .cpp datoteku prevodilac ce pokusati da prevede taj kod, a to nema smisla jer se u trenutku prevodjenja ne zna tip parametra na osnovu kog se generise klasa.