2014-09-25 39 views
0

如果m_attr.GetValue()返回然后一个CString:转换的CString来的std :: string没有 '的GetString()'

为什么没有错误消息,下面的代码工作...只是警告信息 'C4927' ?

std::string sigCncDialog::GetSignalAttributeValue() 
{return m_attr.GetValue();} 

正确的将是当然的:

std::string sigCncDialog::GetSignalAttributeValue() 
{return m_attr.GetValue().GetString();} 

回答

1

因为两害:

  • CStringconversion operator允许隐式转换到C风格字符指针
  • 的编译器显然允许隐式转换序列包含两个用户定义的转换,CString -> const char* -> std::string,你只要提到warning,即使这样的转换是被标准C++禁止的