Re: CMap and struct



Now that's a different question. Since you are storing a structure, you would have to
provide your own hashing function. Note the comment "works for most primitive values".
Your SDataType is not a primitive value, and consequently this hash function is not
sufficient.
joe

On 2 May 2007 21:14:27 -0700, Vahid <vahid.ha@xxxxxxxxx> wrote:

Thanks for your reply Joseph.

I have already tried a few combinations such as the one you suggested.

Yours will create the following errors:

error C2440: 'type cast' : cannot convert from 'SDataType' to
'DWORD_PTR' (refers to the "return" line in

template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key)
{
// default identity hash - works for most primitive values
return (DWORD)(((DWORD_PTR)key)>>4);
}
)

plus the following error:

error C2678: binary '==' : no operator found which takes a left-hand
operand of type 'const SDataType' (or there is no acceptable
conversion)
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc
\include\afxtempl.h(1544) : see reference to function template
instantiation 'BOOL CompareElements<KEY,SDataType>(const TYPE *,const
ARG_TYPE *)' being compiled
with
[
KEY=SDataType,
TYPE=SDataType,
ARG_TYPE=SDataType
]

refering to

template<class TYPE, class ARG_TYPE>
BOOL AFXAPI CompareElements(const TYPE* pElement1, const ARG_TYPE*
pElement2)
{
ASSERT(AfxIsValidAddress(pElement1, sizeof(TYPE), FALSE));
ASSERT(AfxIsValidAddress(pElement2, sizeof(ARG_TYPE), FALSE));

return *pElement1 == *pElement2; // this line
}
Joseph M. Newcomer [MVP]
email: newcomer@xxxxxxxxxxxx
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
.