首页 > 代码库 > VC项目中,构造 CString 时,提示 explicit constructors (C2440) 的解决方法

VC项目中,构造 CString 时,提示 explicit constructors (C2440) 的解决方法

其实还是 ANSI 和 UNICODE 编码的问题。


可以使用宏 _T() 包裹字符串,使得 ANSI 和 UNICODE 兼容。如

CString strJustAnother (_T ("This is a TCHAR string a.k.a. LPCTSTR"));


或者,给那些不想改代码人的偷懒方法,屏蔽掉这个编译错误:


在 stdafx.h 文件中你一般会发现这个宏  _ATL_CSTRING_EXPLICIT_CONSTRUCTORS 的声明。

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // 某些 CString 构造函数将是显式的

把它屏蔽掉即可。

当然了,这样做的结果也是有副作用的。从此以后,对于工程中 CString 对象的隐式类型转换,编译器就不会给你任何警告了。