主题:c2664 错误到底是怎么回事?
冰鱼
[专家分:0] 发布于 2006-03-11 01:27:00
程序:
CString course4[]={"民法学","刑法","西方法律","军事理论基础"};
error C2440: 'initializing' : cannot convert from 'const char [11]' to 'CString'
Constructor for class 'ATL::CStringT<BaseType,StringTraits>' is declared 'explicit'
with
[
BaseType=wchar_t,
StringTraits=StrTraitMFC_DLL<wchar_t>
]
这是什么意思啊? 希望能解释一下,我用的是visual studio 2005 ,总是出现这个错误,我一直没搞懂。
回复列表 (共5个回复)
沙发
lusuo [专家分:10100] 发布于 2006-03-11 21:03:00
CString不能这样付直的~你这是给字符数组付直
你要用数组最好用CStringArray或者CStringList你那种用法很浪费内存~也很危险呵呵!我以前这么做被我们经理骂死了呵呵!
板凳
yangpei518 [专家分:0] 发布于 2007-04-12 23:15:00
我也遇到了相同的问题 但是的代码是:
static char* selection[] = {"进程","启动组","注册表","端口",
"文件","配置","匹配文件","插件"};
CListCtrl* pList =
(CListCtrl*) GetDlgItem(IDC_LISTVIEW1);
pList->SetImageList(&m_selectList,LVSIL_SMALL);
for(n =0;n<8;n++)
{
pList->InsertItem(0,selection[n],0);//这里出现错误
}
错误 1 error C2664: 'int CListCtrl::InsertItem(int,LPCTSTR,int)' : cannot convert parameter 2 from 'char *' to 'LPCTSTR' d:\my projects\system_watch\system_watch\systemdialog.cpp 68
3 楼
zjc_love [专家分:1770] 发布于 2007-04-13 19:49:00
先修改工程属性试下:项目——工程属性——常规——看右边选择字符集为使用多字节....
4 楼
guolihui [专家分:50] 发布于 2008-01-01 08:54:00
这种问题应该是出现在vc6以后的版本中,
[quote]
先修改工程属性试下:项目——工程属性——常规——看右边选择字符集为使用多字节....[/quote]
这样子解决可以,但是我实验过,界面就会出现一定的变化。
楼主的这个问题,实际上是由于微软的一些改进,M$的《自 Visual C++ 6.0 以来 ATL 7.0 和 MFC 7.0 中的重大更改》之中就提到过BSTR 转换到 CString,
可以在使用时,比如:CString str = L"你好,世界!";
MassageBox(L"你的输入有误");
5 楼
华山论剑 [专家分:5310] 发布于 2008-01-02 10:04:00
CString course4[] = { CString("民法学"), CString("刑法"), CString("西方法律"), CString("军事理论基础") };
我来回复