zeby byla szablonem. generyki sa w Javie i to zupelnei cos innego. Jesli Intellisense Ci wysiadlo, to byc moze pojawil sie jakis blad w jego bazie danych - zakmnij visuala, usun plik .ncb (ten duuzy w stosunku do innych) siedzacy w katalogu projektu i po wlaczeniu visuala powinien sie odbudowac i juz byc prawidlowy. Inna sprawa, ze intellisense nie do konca dobrze sobie radzi w przypadku pewnych (prawidlowych) konstrukcji C++ - czesto widywalem sytuacje gdzie dopisanie 1 linijki go wywalalo i przestawal dalej plik skanowac.. ale Twoj przypadek jest dosc prosty i jesli kod masz poprawny to raczej stawiam na blad w .ncb
a blad linkera sie pojawia, w momencie gdy w pliku .h dasz definicje template'a (klasy, funckji..) a w pliku .cpp jego cialo. Bierze sie to stad, ze w momencie kompilowania pliku .cpp i tworzenia kodu maszynowego kompilator nie wie jakimi parametrami uszczegolowic szablon (tzn. co podstawiac za T). Generuje 'cos', ale to 'cos' nie pasuje potem do tego czego inne klasy chca uzywac. Taki podzial na .h i .cpp mozna stosowac tylko w dwoch przypadkach:
- klasa/funkcja nie jest template
- to jest template, ale w pliku .cpp wyraznie napiszesz jakie specjalizacje maja zaistniec np.
plik.h:
//def. klasy
template<class T>
class mojaklasa
{...};
plik.cpp:
//def. cial metod
template<class T>
cos mojaklasa<T>::funkcja(..)
{...}
//explicit specialisation
class mojaklasa<int>;
class mojaklasa<float>;
w/w przyklad utworzy kod dla specjalizacji int i float, i jesli zadne inne specjalizacje nie beda uzywane, to sie skompiluje. ale jak gdzies sprobujesz uzyc mojakalsa<double> a ona nie bedzie wymieniona - znowu sie linker errory pojawiaja. Dlatego tez najczesciej klasy template po prostu pisze sie w calosci w pliku .h, bez podzialu, wtedu problemu nie ma
-- drobna uwaga - w specyfikacji C++ jest napisane, ze kompilatory powinny sobie radzic z przypadkiem podzialu template'a na .h i .cpp bez podobnych cyrkow. niestety, obecnie tylko komercyjny kompilator Comeau sobie radzi. Szczerze powiem ze nie wiem na ile, nie probowalem