Home Segments Index Top Previous Next

783: Mainline

Now, you can assemble a complete constructor function, here shown installed in the class definition:

template 
class 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.