CMap<CString, CString&, CString, CString&> 为什么会错?
我定义的 CMap<CString, CString&, CString, CString&>
为什么会有错呢?
哪位大侠知道原因?
问题点数:20、回复次数:16Top
1 楼cloudshadow1(小强)回复于 2001-07-24 12:08:11 得分 0
你要#include <afxtempl.h> Top
2 楼luckboycjw(编程浪子)回复于 2001-07-24 12:14:17 得分 0
可能是上述错误的!Top
3 楼c_z_y(用力)回复于 2001-07-24 12:34:35 得分 2
为什么不用CMapStringToString?Top
4 楼iamfancy(边城狂人) James Fancy ()回复于 2001-07-24 13:41:36 得分 0
放心,所有头文件我都已经包括了的。我也知道用 CMapStringToString,但我现在只想知道 CMap<CString, CString&, CString, CString&> 为什么要出错?Top
5 楼nustchen(壁虎)回复于 2001-07-24 15:00:18 得分 0
该成CMap< CString, LPCTSTR... >
效果一样Top
6 楼swxh(中重)回复于 2001-07-24 15:28:18 得分 0
什莫错?贴出来!!
Top
7 楼iamfancy(边城狂人) James Fancy ()回复于 2001-07-25 11:52:40 得分 0
--------------------Configuration: Test - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
Test.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(129) : error C2440: 'type cast' : cannot convert from 'class CString' to 'unsigned long'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(1324) : see reference to function template instantiation 'unsigned int __stdcall HashKey(class CString &)' being compiled
TestDlg.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(129) : error C2440: 'type cast' : cannot convert from 'class CString' to 'unsigned long'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(1324) : see reference to function template instantiation 'unsigned int __stdcall HashKey(class CString &)' being compiled
Generating Code...
Error executing cl.exe.
Test.exe - 2 error(s), 0 warning(s)
Top
8 楼MSVCer(家宝)回复于 2001-07-25 12:31:38 得分 0
人家MFC定义的CMapStringToString可是实实在在的类,而不是模板啊,人家都这样定义一定有原因吧,看看MFC源码,也许有点帮助Top
9 楼JJONY()回复于 2001-07-25 13:01:31 得分 3
CMap的定义是:
template< class KEY, class ARG_KEY, class VALUE, class ARG_VALUE >class CMap
可能Key必须是DWORD,int,LPTSTR...之类的简单类型,而不能是一个对象,如CString。虽说Key是一个class,但实际只能是一个数值。Top
10 楼wobuhui()回复于 2001-07-25 13:05:55 得分 0
复杂Top
11 楼iamfancy(边城狂人) James Fancy ()回复于 2001-07-27 08:58:48 得分 0
但是从理论上来说,CMap 的定义中各项都是 class,我就应该可以定义为 class 才对啊?
什么地方有相关的例子和资料,帮我找找吧!MSDN 中的例子我看过了,太简单,只用了一个 DWORD 到 String 的 Map。Top
12 楼_STLer(VC++)回复于 2001-07-27 09:04:37 得分 5
编译器试图进行'class CString' to 'unsigned long',可能key只支持内建类别,Top
13 楼iamfancy(边城狂人) James Fancy ()回复于 2001-07-27 10:21:58 得分 0
恕我无知了,什么是内建类别啊?Top
14 楼dengguoyuggggg(dengguoyuggggg)回复于 2001-07-27 11:05:52 得分 10
Map要用key来产生哈希表Top
15 楼dengguoyuggggg(dengguoyuggggg)回复于 2001-07-27 11:08:39 得分 0
CString没有生成哈希表的函数,你得自己重载
unsigned int __stdcall HashKey(class CString &)Top
16 楼iamfancy(边城狂人) James Fancy ()回复于 2001-07-27 16:23:06 得分 0
可不可以告诉我哪些类型有生成哈希表的函数啊?Top




