Hej mam problem z szablonami klas ... a dokladniej z ich parametrami.
Chodzi o implementacje grafu i iteratora.
Mam dwa szablony klas.
Pierwsza Graf<W , K> z dwoma parametrami oznaczajacymi typ wierzcholka i krawedzi.
Oto czesc szablonu klasy Graf<W , K> z konstruktorem ... reszty metod nie podaje
template <class W , class K>
class GrafIteratorWierzcholkowy ;
const int pojemnoscGrafu = 15 ;
template <class W , class K>
class Graf
{
private:
W tablicaW[pojemnoscGrafu] ;
K tablicaK[pojemnoscGrafu][pojemnoscGrafu] ;
int ileW ;
public:
typedef GrafIteratorWierzcholkowy<W> iterW ;
Graf() : ileW(0) { } // konstruktor
friend class GrafIteratorWierzcholkowy<W , K> ;
}
A teraz szablon klasy GrafIteratorWierzcholkowy<W>
Ta klasa ma tylko jeden parametr taki jak w Grafie<W , K>
Drugi (typ krawedzi K) jej nie obchodzi ...
Oto ten szablon (tylko z konstruktorem, reszty metod nie podaje):
template <class W>
class GrafIteratorWierzcholkowy
{
friend class Graf<W , class K> ;
public:
int nr ;
W wybrany ;
Graf<W , class K> & graf ;
public:
GrafIteratorWierzcholkowy(Graf<W , class K> & gr) : graf(gr)
{
nr = 0 ;
W wybrany = graf.tablicaW[nr] ;
}
}
Co jest nie tak w szablonie klasy GrafIteratorWierzcholkowy<W>.
Jezeli np. zamienie w tym szablonie w parametrach klasy Graf z Graf<W , class K> na Graf<W , int> , to dla Grafow z krawedziami typu int bedzie iterator dzialal ... ale mi chodzi zeby dzialal z kazdym Grafem bez wzgledu na to jakiego typu sa krawedzie (K) ...
Co tu zmienic?
Mam nadzieje, ze jasno opisalem moj problem.
Z gory dzieki za ewentualne odpowiedzi.
Pozdrawiam.
AcidSeal