【发布时间】:2014-03-30 20:39:18
【问题描述】:
我正在将一个项目从 vs 6.0 迁移到 vs 2008,我收到以下错误,
错误 C2664:'_com_ptr_t<_iiid>::_com_ptr_t(int)':无法转换 参数 1 从 'ATL::CComPtr' 到 'int'
输出窗口:
with
[
_IIID=_com_IIID<XML::IXMLDOMNode,& _GUID_2933bf80_7b36_11d2_b20e_00c04f983e60>
]
and
[
T=XML::IXMLDOMNode
]
我无法解决此问题。在 vs 6.0 中同样可以正常工作,我知道从 vs 6.0 到 vs 2008 的很多事情都发生了变化。
关于以下错误的详细信息:
bool CXMLHelper::GetFirstSubRecord()
{
bool bFound = false;
if ( m_spXMLNode == NULL ) return false;
if ( VARIANT_TRUE == m_spXMLNode->hasChildNodes() )
{
typedef object_iterator<XML::IXMLDOMNode> iterator;
for ( iterator oIte(m_spXMLNode->childNodes); oIte != iterator(); ++oIte )
{
XML::IXMLDOMNodePtr spNode(*oIte); // c2664 error
if ( spNode->hasChildNodes() && !CXMLHelper::HasTextChild(spNode) )
{
m_spXMLNode = spNode;
bFound = true;
break;
}
}
}
return bFound;
}
IXMLDOMNodePt 的定义:
_COM_SMARTPTR_TYPEDEF(IXMLDOMNode, __uuidof(IXMLDOMNode));
我了解该错误是因为编译器无法将 oIte 从“ATL::CComPtr”转换为“int”。我对 COM 很陌生,非常感谢任何解决此错误的帮助。提前非常感谢。
问候, 安库什。
【问题讨论】:
标签: visual-c++ com