iterator w klasie wzorcowej

0

Mam napisany taki wzorzec klasy:
template <class typ="typ">
class kosz {
int liczba_elem;
std::list<typ> smieci;
public:
kosz();
~kosz();
void pokaz_co();
void dodaj(typ ob);
bool usun(int nr);
typ przywroc(int nr);
void czysc();
};

Szczegolna uwage zwaracam na skladnik std::list<typ> smieci, gdyz to z nim sa problemy.
Otoz - czy jest jakis sposob zeby zdefiniowac sobie taki itertor std::list<typ>::iterator iter.
Gdy zamieszczam w programie taka definicje kompilator strajkuje. Mozliwe jest jedynie zdefiniowanie iteratora do listy konkretnegoi typu czy moze jest jakas mozliwosc takiej definicji jak zamieszczona powyzej ?

0

Spróbuj przed definicją dodać typename.

0

Niestety to nie pomaga. Ale niewazne bo juz zrezygnowalem z STL'a ale mam kolejny problem .... Definicja klasy wyglada teraz tak:
template <class typ="typ">
class kosz {
int liczba_elem;
typ* smieci[MAXS];
public:
kosz();
~kosz();
// void pokaz_co();
void dodaj(typ ob);
bool usun(int nr);
typ przywroc(int nr);
void czysc();
};

Teraz z kolei kiedy definiuje w programie obiekt tej klasy kompilator wywala cos takiego:
test4.cpp error: aggregate kosz<int> koszyk' has incomplete type and cannot be defined test4.cpp:15: error: storage size of koszyk' isn't known

0

Nie miałem wcześniej czasu, ale teraz skompilowałem takie coś:

#include <iostream>
#include <list>

template <class typ>
class kosz
{
	int liczba_elem;
	std::list<typ> smieci;
	typename std::list<typ>::iterator it;

public:
	kosz() {};
	~kosz() {};
};

int main()
{
	kosz<int> k;
}

I wszystko jest OK. Dodaj resztę swoich metod i będziesz miał to co chciałeś. Nie warto rezygnować z STL.

0

Juz wrocilem do STL'a i wszystko ladnie dziala. Dzieki za pomoc.

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