今天头一次遇到这个问题。
如下,把几个变量的声明放在函数的最开头就没事了
- int CXmlReader::GetFirstChildByID(MSXML2::IXMLDOMNodePtr *ppNode, wstring strID, MSXML2::IXMLDOMNodePtr pFather)
- {
- if (!pFather)
- {
- goto errResult;
- }
- MSXML2::IXMLDOMNodePtr pChild, pTemp;
- BSTR text;
- MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
- MSXML2::IXMLDOMNodePtr pAttr = NULL;
- pFather->get_firstChild(&pChild);
- while (pChild)
- {
- pChild->get_attributes(&pAttrs);
- if (!pAttrs)
- {
- goto errResult;
- }
- pAttrs->nextNode(&pAttr);
- if (!pAttr)
- goto errResult;
- pAttr->get_text(&text);
- if (strID == (LPCTSTR)((_bstr_t)text))
- {
- *ppNode = pChild;
- return 0;
- }
- //pFather->get_next
- pChild->get_nextSibling(&pTemp);
- swap(pChild, pTemp);
- }
- errResult:
- *ppNode = NULL;
- return -1;
- }