Connecting Tech Pros Worldwide Help | Site Map

Iterators within templates

Gaijinco
Guest
 
Posts: n/a
#1: Mar 26 '06
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.

TB
Guest
 
Posts: n/a
#2: Mar 26 '06

re: Iterators within templates


Gaijinco skrev:[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)[/color]

for(typename vector<T>::iterator pos=v.begin(); pos<v.end(); ++pos)
[color=blue]
> 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]

--
TB @ SWEDEN
John Carson
Guest
 
Posts: n/a
#3: Mar 26 '06

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


Closed Thread