quinta-feira, setembro 14, 2006

Aula 12

template<>
class ListIteratorImp
{

private:

ListImp<>& List;
T* Cur;

public:

ListIteratorImp( ListImp<>& List): List( List), Cur(Cist.PeekHead())
{}
bool HasNext() const
{

return Cur!= "NULL";

}
T* Next()
{

T* temp= Cur;
if(Cur)

Cur= Cur->Next;

return temp;

}
void Restart()
{

Cur= List.PeekHead();

}

};


template <>
void Print(ListImp<>& List)
{
for(ListIteratorImp<> Lit(List); Lit.HasNext();)
Print(Lit.Next());
}

template<>
void Iterate(ListImp<>& List, void (*func)(T*))
{

for(ListIteratorImp<>& Lit(List); Lit.HasNext();)
(*func)(Lit.Next());
}

void Print(Banana*);
ListImp<> bananas;
void main()
{
bananas.Add(new Banana(...));
...
Iterate(bananas, Print);

}




//Esta classe esta alterada, na parte for

template <>
void Print(ListImp<>& List)
{
for(ListIteratorImp<> Lit(List); Lit(); ++Lit)
Print(Lit.Current());
}


operator int()
{

return Cur!='NULL';

}

T* operator ++(int)
{

return Next();

}

T* operator ++()
{

if(Cur)

Cur=Cur->Next;

return Cur;

}

0 comentários:

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Justin Bieber, Gold Price in India