Void转换为类型

时间:2014-10-01 10:49:40

标签: c++ mfc

我有基于MFC对话框的应用程序。

void CThr_MfcDlg::OnBnClickedButton1()
{
    this->SetWindowTextW(L"bla");
    (CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello") ;

}

this->SetWindowTextW(L"bla");将标题更改为bla

我希望第(CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello") ;行应该将标题更改为hello,但编译错误:

Error   1   error C2440: 'type cast' : cannot convert from 'void' to 'CThr_MfcDlg *'    

1 个答案:

答案 0 :(得分:1)

阅读this。因为 - >运算符的优先级(2)高于强制转换运算符(3),您的代码将以这种方式解析:

(CThr_MfcDlg*) (GetDlgItem(IDD_THR_MFC_DIALOG)->SetWindowText(L"hello")) ;

为避免这种情况,您应该使用带括号的括号。

// this will be correct.
((CThr_MfcDlg*)GetDlgItem(IDD_THR_MFC_DIALOG))->SetWindowText(L"hello");