函数返回值难道不可以强制类型转换吗
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;//可以赋值
}
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;//可以赋值
}
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 );
LPTSTR text=str;可以直接转换,CString类重载了LPTSTR
一般要重新构造一个数组拷贝过去。