Witam, mam problem ze skompilowaniem następującego kodu:
template <typename T>
BinTreeT::Wezel * BinTreeT<T>::WyszukajWezel(Wezel * lp_inW, T & T_inT)
{
if (lp_inW != 0)
if (lp_inW->mT_wartosc == T_inT)
return lp_inW;
else if (lp_inW->mT_wartosc >= T_inT)
return WyszukajWezel(lp_inW->mlp_lewaGalaz, T_inT);
else
return WyszukajWezel(lp_inW->mlp_prawaGalaz, T_inT);
return 0;
}
gdzie definicja klasy BinTreeT:
template <typename T> class BinTreeT
{
public:
BinTreeT(void);
BinTreeT(T & T_inT);
~BinTreeT(void);
private:
// klasa zawierajaca pozycje drzewa i wskazniki
class Wezel {
public:
T mT_wartosc;
Wezel * mlp_lewaGalaz;
Wezel * mlp_prawaGalaz;
Wezel(T & T_inT) : mT_wartosc(T_inT), mlp_lewaGalaz(0), mlp_prawaGalaz(0) {}
};
// korzen drzewa binarnego
Wezel * mlp_korzen;
// liczba niepustych wezlow
long mn_liczbaWezlow;
public:
// symuluje alokacje pamieci na nowy wezel
bool PelneDrzewo(void);
// dodaje element do drzewa
void DodajWezel(T & T_inT);
// sprawdza, czy liczba elementow jest wieksza niz 0
bool PusteDrzewo(void);
private:
// funkcja dla potrzeb wewnetrznych - ulatwia usuwanie elementow z drzewa
std::pair<Wezel*,Wezel*> PozycjaWezla(T & T_inT);
// zwraca wskaznik do odnalezionego wezla lub NULL
Wezel * WyszukajWezel(Wezel * lp_inW, T & T_inT);
public:
// usuwa wezel
void UsunWezel(T & T_inT);
};
Klasa jest niepełna (jeszcze), a kompilator zgłasza błąd w linijceBinTreeT::Wezel * BinTreeT<T>::WyszukajWezel(Wezel * lp_inW, T & T_inT)
Treść jego:
error C2955: 'BinTreeT' : use of class template requires template argument list (...) see declaration of 'BinTreeT'
Próbowałem różnie poprawić tę linijkę, ale najmniej błędów mi się pojawiało, gdy napisałem ją jak wyżej.
Proszę o pomoc.