我移植一個項目從VS 6.0到VS 2008年,我得到以下錯誤,無法從 'ATL ::但是CComPtr <T>' 轉換參數1到 '廉政'
錯誤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));
我知道錯誤是因爲編譯器無法將'ATL :: CComPtr'的oIte轉換爲'int'。我對COM很陌生,不勝感激任何幫助解決這個錯誤。提前致謝。
Regards, Ankush。
哇銳齒。這就像魅力一樣。非常感謝修復和解釋。 – user3360310