From: Jonathan W. <co...@co...> - 2005-06-09 16:32:22
|
On Tue, Jun 07, 2005 at 04:14:41PM -0300, Darko Miletic wrote: > m....@sy... wrote: > >Hi, I have am trying to use your API with MSVC71. Most things seem to work > >okay, but when I have a line of code like the following: > > > > const xmlpp::Node::NodeList& m_nodeList = root->get_children(); > > xmlpp::Node::NodeList::const_iterator itr = m_nodeList.begin(); > > > >After running my program through a debugger, I found that it's when > >m_nodeList.begin() is called that the problem arises. I can make calls to > >m_nodeList.size() and empty() without a problem, it's just the begin one. > >The error I get is "The application has requested the runtime to terminate > >in an unusual way..." > > > >Does anyone know what I am doing wrong? Thanks in advance for any help, > > You do it wrong. get_children return a list container that should > contain all children elements. However if there is no children of that > node get_children returns empty list. You must check if list contains > something. You can do it like this: > > xmlpp::Node::NodeList nl = node->get_children(); > if ( !nl.empty() ) { > xmlpp::Node::NodeList::iterator it = nl.begin(); > //other code here > } Surely not?!?! If the container is empty calling begin() will return an iterator that compares equal to end(). _dereferencing_ that iterator would be an error, but not simply copying it. jon -- "What I tell you three times is true" - The Hunting of the Snark |