[c++] Przyjaźń z klasą szablonową - unresolved external

0
template<class typ> class TablicaDynamiczna
{
	public:
		//jakies pierdoly ;)
                friend ostream& operator<<(ostream&, TablicaDynamiczna<typ>&);
		friend istream& operator>>(istream&, TablicaDynamiczna<typ>&);
};

template<class typ> ostream& operator<<(ostream& wyj, TablicaDynamiczna<typ>& tab)
{
	for (int i = 0; i < tab.rozmiar; i++) {
		wyj<<tab[i]<<" ";
	}
	wyj << endl;
	return wyj;
}

template<class typ> istream& operator>>(istream& wej, TablicaDynamiczna<typ>& tab)
{
	for (int i = 0; i < tab.rozmiar; i++) {
		wej>>tab[i];
	}
	return wej;
}


Wywala mi błąd:
[Linker Error] Error: Unresolved external 'operator >>(std::basic_istream<char, std::char_traits<char> >&, TablicaDynamiczna<int>&)' referenced from D:...\DEBUG_BUILD\ZAD2.OBJ

[Linker Error] Error: Unresolved external 'operator <<(std::basic_ostream<char, std::char_traits<char> >&, TablicaDynamiczna<int>&)' referenced from D:...\DEBUG_BUILD\ZAD2.OBJ

Co robię źle?

0

Wydaje mi się, że próbujesz zaprzyjaźnić funkcję operator<<( ... ), a powinieneś i chcesz funkcję operator<typ>(...). Czyli przed nazwą klasy potrzebujesz wrzucić nagłówki operatorów:

template<class typ> ostream& operator<<(ostream& wyj, TablicaDynamiczna<typ>& tab);
template<class typ> istream& operator>>(istream& wyj, TablicaDynamiczna<typ>& tab);

ale jeszcze wcześniej zapowiedź klasy:
template<class typ> class TablicaDynamiczna;

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