struct CClientItem
{
public:
int m_nClnId; // client identity
int m_nPort; // client connect port
time_t m_timeAlive; // client alive time, time(NULL);
CString m_strIpAddr; // client connect address
bool m_bIsAlive;
CClientItem() : m_nClnId(0), m_nPort(0), m_timeAlive(0), m_strIpAddr(_T("")) // forbid default constructor
{
}
CClientItem(int nId) : m_nClnId(nId), m_nPort(0), m_strIpAddr(_T(""))
{
}
bool operator == (const CClientItem& clnIn) const
{
return (clnIn.m_nClnId == m_nClnId);
}
};
在声明CAtlMap<CClientItem, int> m_mapClientItem;作为类成员的时候,报告了如下错误
错误报告如下:
1>正在编译...
1>MainDlg.cpp
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(128) : error C2440: “<function-style-cast>”: 无法从“const CClientItem”转换为“ULONG_PTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(127): 编译类 模板 成员函数“ULONG ATL::CDefaultHashTraits<T>::Hash(const T &) throw()”时
1> with
1> [
1> T=CClientItem
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(162): 参见对正在编译的类 模板 实例化“ATL::CDefaultHashTraits<T>”的引用
1> with
1> [
1> T=CClientItem
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(170): 参见对正在编译的类 模板 实例化“ATL::CDefaultElementTraits<T>”的引用
1> with
1> [
1> T=CClientItem
1> ]
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(1989): 参见对正在编译的类 模板 实例化“ATL::CElementTraits<T>”的引用
1> with
1> [
1> T=CClientItem
1> ]
1> e:\cw\project\companyproject\shplatform\shindustryplatform\common\wkraliveserver.h(34): 参见对正在编译的类 模板 实例化“ATL::CAtlMap<K,V>”的引用
1> with
1> [
1> K=CClientItem,
1> V=int
1> ]
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcoll.h(128) : error C2514: “ULONG”: 类没有构造函数
1> c:\program files\microsoft sdks\windows\v6.0a\include\windef.h(48) : 参见“ULONG”的声明
这是怎么回事呢?
3 个解决方案
#1
求大礼路过
#2
在 VS2005中 你的代码编译成功。
#3
没人回答我还是结贴吧
#1
求大礼路过
#2
在 VS2005中 你的代码编译成功。
#3
没人回答我还是结贴吧