From: <and...@am...> - 2003-05-27 22:49:52
|
> One problem I faced is the type return by iterator::operator*(). > I first wanted to return a Node &. It is, I think, more > logical, and avoid > writing things like (*iter)->do_something(). > However this change the use of dynamic_cast to 'test' the > type of node. If the > cast fail we have an exception instead of just returning a > null pointer. > > So the question is : > What do you expect as a return type for > Node::ChildrenList::iterator::operator*() ? I always use Node& for such code. (In more detail, I use a T& if the value is copied into the container, and if modifying the value in the container does not affect the value copied from; I use T* if modifying the value To get a non-trapping dynamic cast, the user can always take the address: dynamic_cast<Special_Node*>(&(*iter)) |