64,683
社区成员
发帖
与我相关
我的任务
分享
int _tmain(int argc, _TCHAR* argv[])
{
CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
XmlDocument myDoc(_T(".\\file.xml") );
XmlFolderElement *pXmlFolder =NULL;
if (S_OK != myDoc.SelectSpecificFolder(_T("\\music"), &pXmlFolder ) )
{
cout<<"selectSpecificFolder failed"<<endl;
}
LPTSTR folderName= pXmlFolder->GetFolderName(); //!!!这里出错!!!!
CoUninitialize();
return 0;
HRESULT XmlDocument::SelectSpecificFolder(LPCTSTR folderPath, XmlFolderElement **resultFolder)
{
//字符串方面的处理,将folderPath转化成标准的xPath(省略这部分代码)
.................
MSXML2::IXMLDOMNodePtr pFolderNode =pXmlDoc->selectSingleNode(xPath);
//QueryInterface来进行接口转换
MSXML2::IXMLDOMElementPtr pFolderElement;
if ( S_OK != pFolderNode->QueryInterface(__uuidof(MSXML2::IXMLDOMElement), (void **)&pFolderElement))
{
// _com_issue_errorex(_hr, MSXML2::IXMLDOMElement, __uuidof(MSXML2::IXMLDOMElementPtr));
}
*resultFolder = &XmlFolderElement(pFolderElement) ;
LPTSTR aa= (*resultFolder)->GetFolderName(); //!!!!!!这里完全正确!!!
return S_OK;
}
LPTSTR XmlFolderElement::GetFolderName()
{
_variant_t folderNameVar = pFolderElement->getAttribute(_bstr_t(_T("name"))); //调用IXmlDomElement.getAttribute()出现上述错误提示!!!
return (LPTSTR)folderNameVar.bstrVal;
}
int* fa()
{
int * a= new int(5);
return a;
}
void fb()
{
int *b = fa();
........
delete b; //这里把释放资源的任务 交给方法的使用者,感觉设计上不合理。而且容易出现疏忽的情况
}
void fb()
{
int *b = fa();
........
}