| re: Iterators within templates
"Gaijinco" <gaijinco@gmail.com> wrote in message
news:1143375411.571278.160440@u72g2000cwu.googlegr oups.com[color=blue]
> Why this doesn't work?
>
> 1: template <typename T>
> 2: void imprimir(vector<T> v)
> 3: {
> 4: for(vector<T>::iterator pos=v.begin(); pos<v.end(); ++pos)
> 5: cout << *pos << " ";
> 6: cout << endl;
> 7: }
> 8:
>
> The compiler says
> Line 4 expected `;' before "pos"
>
> I don't know what that's supposed to mean! Thanks.[/color]
Please don't include line numbers with your code. Anyone who attempts to
compile it must first manually delete the numbers.
Replace
for(vector<T>::iterator pos=v.begin(); pos<v.end(); ++pos)
with
for(typename vector<T>::iterator pos=v.begin(); pos<v.end(); ++pos)
The compiler is interpreting vector<T>::iterator as a variable name, not as
a type name. Using typename tells it to interpret it as a type.
--
John Carson |