error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType>”
原创
©著作权归作者所有:来自51CTO博客作者运妙心藏的原创作品,请联系作者获取转载授权,否则将追究法律责任
在使用MFC编译代码时出现下面的情况:
代码:
BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,
int nIconNormal)
{
BCMenuData *mdata;
// Find the old BCMenuData structure:
CString junk=OptionText;
// ...下面省略
}
出错:
error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType,StringTraits>”
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
正确方式(语法检查和编译检查比较严格):
BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,
int nIconNormal)
{
BCMenuData *mdata;
// Find the old BCMenuData structure:
CString junk(OptionText);
// ...下面
}