[C++/STL/szablony]problem z Vectorem

0
#include<iostream>
#include<vector>
#include<list>

template <class Typ>
class Punkt
{
	std::list<Typ*> BB;
	std::vector<Typ> CC;
	std::vector< Typ* >::iterator iter;// TU NIE DZIALA
             std::vector< int* >::iterator iter2; //wszystko ok
public:
      Punkt( Typ _x);

      Typ x, y, z;
};

template <class Typ>
Punkt<Typ>::Punkt(Typ _x)
{
	std::list<Typ> AA;
	std::vector< int >::iterator iter3; //DZIAŁA
}

A wydawalao by sie ze blad "Error: expected ";" before "iter"" to nic strasznego :|
Czy ktoś wiec dlaczego nie dziala i co ewentualnie zrobić żeby zaczęło ?

0

wstaw tą linię
typename::std::vector<Typ*>::iterator iter;
chodzi o wieloznaczność

0

a nie prosciej dodac
using namespace std; ?

0

up -> Jeśli to plik nagłówkowy (a na taki wygląda), ktokolwiek kto miałby go później użyć pewno chciałby powiesić autora takiego kodu za jaja na suchej gałęzi ;) Nie ma nic gorszego niż zanieczyszczanie przestrzeni nazw.

na temat -> nom, kompilator nie wiedząc, co to 'Typ' nie jest do końca pewien, co oznacza 'std::vector< Typ* >::iterator', więc trzeba mu wskazać, że to typ ;)

0

a jeszcze w ramach ciekawostki warto dodać, że using namespace ch... da :]
bo vector< Typ* >::iterator nadal bedzie problemy sprawiać. Kompilator myśli, że iterator to składowa statyczna vectora, dokładnie rzecz biorąc. I bez typename się nie obejdzie.

do wieszania się dołączam. using namespace'a całego, bo jedna linia coś nie działa... :|

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