代码改变世界

error C2593: “operator +=”不明确

2010-03-18 17:40  Phoenix'K  阅读(1895)  评论(0)    收藏  举报
void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)   
{   
    // TODO: 在此添加消息处理程序代码和/或调用默认值   
    CClientDC dc(this);   
    TEXTMETRIC tm;   
    dc.GetTextMetrics(&tm);   
    if(0x0d == nChar)   
    {   
        m_strLine.Empty();   
        m_ptOrigin.y += tm.tmHeight;   
    }   
    else if (0x08 == nChar)   
    {   
        COLORREF clr = dc.SetTextColor(dc.GetBkColor());   
        dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);   
        m_strLine = m_strLine.Left(m_strLine.GetLength() - 1);   
        dc.SetTextColor(clr);   
    }   
    else  
    {   
        m_strLine += nChar;   
    }   
  
    dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);   
  
    CView::OnChar(nChar, nRepCnt, nFlags);   
}  

编译时出现“operator   +=”不明确,也就是m_strLine += nchar

改正方法:

        m_strLine += (char)nchar,因为在代码中有个CString的类型,所以如果支持了这个类型的话,从unsigned int转换到CString和char的等级都是标准转换,所以编译器无法判断到底应该转换到哪一个,故而导致了这个问题。

故应该进行强制转换!