【问题标题】:error C2440: 'type cast' : cannot convert from 'bool' to 'CString'错误 C2440:“类型转换”:无法从“布尔”转换为“CString”
【发布时间】:2012-08-15 20:16:08
【问题描述】:

我收到以下错误:

C2440: 'type cast' : 无法从 'bool' 转换为 'CString'

以下代码:

if ((CString)XSave->GetVersionAt(j).HasService_Ref())
    m_pVersion->SetstrServicesRef((CString)XSave->GetVersionAt(j).GetService_Ref());

感谢任何帮助。

【问题讨论】:

  • GetService_Ref()的返回类型是什么? SetstrServicesRef() 的接受类型是什么?
  • 我认为您需要添加一些额外的括号。
  • 不要在 C++ 中使用 C 风格的转换!
  • 你试图通过这样的if 条件检查什么?这将始终正确,因为CString 将被隐式转换为PCXSTR(实际上是const char*),在MS 实现中永远不会为NULL。可能您需要使用CString::IsEmpty() 函数结果。或者只是从if 条件中删除CString 演员。
  • 知道了!看起来 HasService_Ref 返回 bool 但你偶尔会通过复制粘贴将其转换为 CString 我相信:-)

标签: c++ visual-studio visual-c++ compiler-errors visual-studio-2005


【解决方案1】:

看起来HasService_Ref 返回bool,但你偶尔在if 条件内将它转换为CString。移除演员表,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多