error C2440: ‘initializing’ : cannot convert from ‘wchar_t *’ to ‘ATL::CStringT

在使用MFC编译代码时出现下面的情况:

error C2440: ‘initializing’ : cannot convert from ‘wchar_t *’ to ‘ATL::CStringT<BaseType,StringTrait

相关的代码如下:

  1. BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,
  2.                            int nIconNormal)
  3. {
  4.     BCMenuData *mdata;
  5.     // Find the old BCMenuData structure:
  6.     CString junk=OptionText;
  7.     // …下面省略

错误提示:

  1. error C2440: “初始化”: 无法从“wchar_t *”转换为“ATL::CStringT<BaseType,StringTraits>”
  2. 1>          with
  3. 1>          [
  4. 1>              BaseType=char,
  5. 1>              StringTraits=StrTraitMFC_DLL<char>
  6. 1>          ]
  7. 1>          class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit
  8. 1>          with
  9. 1>          [
  10. 1>              BaseType=char,
  11. 1>              StringTraits=StrTraitMFC_DLL<char>
  12. 1>          ]

正确方式(语法检查和编译检查比较严格):

  1. BOOL BCMenu::ModifyODMenuW(wchar_t *lpstrText,wchar_t *OptionText,
  2. int nIconNormal)
  3. {
  4. BCMenuData *mdata;
  5. // Find the old BCMenuData structure:
  6. CString junk(OptionText);
  7. // ...下面
  8. }
© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发