函数返回值难道不可以强制类型转换吗
CString Hello()
{
CString str="hello";
return str;
}
BOOL CConverterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
LPTSTR text;
text=(LPTSTR)(LPCTSTR)Hello;//不可以赋值
}CString Hello()
{
CString str="hello";
return str;
}
BOOL CConverterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
LPTSTR text;
CString str;
str=Hello();
text=(LPTSTR)(LPCTSTR)str;//可以赋值
}

解决方案 »

  1.   

    那个可不是函数返回值啊,那是函数入口地址 ....Hello后面加括号就可以了
      

  2.   


    Hello() will give you a temporary CString object which is destructed right after.
    The memory address, returned from (LPCTSTR) operator, is NOT longer valid!I would suggest the following lines:CString str = Hello();
    LPTSTR text = str.GetBuffer();
    // or
    // LPTSTR text = const_cast<LPTSTR>( (LPCTSTR)str );
      

  3.   

    CString str=Hello();
    LPTSTR text=str;可以直接转换,CString类重载了LPTSTR
      

  4.   

    将const类型转化为非const类型,这个要小心,会有严重后果的。
    一般要重新构造一个数组拷贝过去。
      

  5.   

    不错 不错! 我懂了 其实转换最好了  CString类重载了LPTSTR
      

  6.   

    请问c版类型转换与c++ 版类型转换 const_cast static_cast dynamic_cast 之类的四个类型转换的区别是什么。
      

  7.   

    我写错了Hello后面应该是加括号的明白为什么不行了