class CompositeElement : public Element { public: virtual void Accept(Visitors); private: List<Element*>* _children; }; void CompositeElement::Accept (Visitors v) { ListIterator<Element*> i(_children); for (i.First(); !i.IsDone(); i.Next() { i .Currentltem()->Accept(v) ; } v.VisitCompositeElement(this); }