Now, you can assemble a complete constructor function, here shown installed in the class definition:
templateclass iterator { public: iterator (header & header) { first_link_pointer = header.first_link_pointer; current_link_pointer = first_link_pointer; } iterator_parameter* access ( ) { return current_link_pointer -> element_pointer; } void advance ( ) { current_link_pointer = current_link_pointer -> next_link_pointer; } int endp ( ) { return ! current_link_pointer; } void reset ( ) { current_link_pointer = first_link_pointer; } private: link* current_link_pointer; link * first_link_pointer; };
The constructor establishes the value of first_link_pointer
, because
the reset
member function needs that value to prepare the iterator
for reuse. Note that both the header
class and the
iterator
class happen to have member variables named
first_link_pointer
.