2014-04-07 121 views
2
CComSafeArray<BYTE> arr; 
arr.Add(0x00); 

錯誤 - >C2668: 'ATL :: CComSafeArray ::添加':不明確調用重載函數爲什麼我不能將0添加到CComSafeArray?

我可以增加任何價值,但不能添加0爲什麼呢?

順便說一句我目前在做

const byte zero = 0x00; 
arr.Add(zero); 

,但我不明白爲什麼我不能只是添加0

+3

VS會告訴你*所有*的如果進一步向下滾動,可能會使它變得模糊不清。 (在這裏你可能會發現與指向0x0的指針有衝突,可能是LPSAFEARRAY,或者某些類型; sry,沒有我的工具鏈)。試試'static_cast (0)' – WhozCraig

回答

2

的方法添加元素的理由是:

HRESULT Add(_In_ const T& t, _In_ BOOL bCopy = TRUE) // 0x00 as zero for t 

也就是說,您的論點預​​計爲const BYTE&。然而,還有另一種Add方法,可以接受你的無參數:

HRESULT Add(_In_ const SAFEARRAY *psaSrc) // 0x00 as NULL for pasSrc 

因此,模糊性和您預計通過適當鑄造你的論點來解決它:

CComSafeArray<BYTE> arr; 
arr.Add((const BYTE&) 0x00); 
相關問題