2014-04-07 120 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); 
相关问题