你试过没?这问题没那么简单。
我以前一直喜欢用char * 直接赋值给CString 变量,CString 会自动做转换,很方便。
比如 typeid('a').name()的返回值永远是char*类型的,以前可以直接初始化给CString 变量。
可是VS2022不可以这么做了。
char *d;
CString a=d; //VS2022常规情况下会出错(编译器进行特殊复杂难懂的设置后也可以通过),而vc60可以这么搞毫无问题
CString a(d);//可以
CString a;a=d;//可以
CString a=(CString)d;//可以
那个错误信息是:
严重性代码说明项目文件行禁止显示状态
错误(活动)E0415不存在从 "char *" 转换到 "ATL::CStringT<wchar_t, StrTraitMFC_DLL<wchar_t, ATL::ChTraitsCRT<wchar_t>>>" 的适当构造函数Project1F:\t2\Project1\Project1.cpp39
【 在 z16166 的大作中提到: 】
: nurl要用const吧,不然vs2022报错,说你有修改常量字符串的风险。
: 剩下就轻松编译过了,不管是ATL里的CString,还是MFC里的CString
: const char* nurl = "mmmmmmmmm";
: ...................
--
修改:bn95 FROM 111.48.114.*
FROM 111.48.114.*