2016-03-16 40 views
0

的右側操作數我需要你的幫助! 這是我的代碼:錯誤C2679:二進制'=':沒有操作員定義,它需要一個類型

strName = pWeapon->GetInvenNormalIcon(); 

則strName是一個字符串!還有GetInvenNormalIcon的返回! 但現在的問題!我需要在char * var上設置該字符串! 我試圖通過這種方式

pWeapon->szName   = strName; 

做,但我得到這個錯誤

error C2679: binary '=' : no operator defined which takes a right-hand operand of type 

我有什麼做的?謝謝

+0

您需要嘗試將'std :: string'轉換爲'char *'。 – songyuanyao

+0

您尚未提供足夠的信息來幫助我們理智地提供幫助。例如'pWeapon-> szName'是否應該指向分配的內存?如果是這樣,它將如何被釋放?如果可以,嘗試提交[mcve]。 –

回答

1

如果strNamestd::string您必須使用strName.c_str()方法得到const char*指向其內容。但是你應該明白,如果strName是一個局部變量,它將在函數退出時釋放,所以你的指針將變成懸擺。也許最好也是std::string

UPD:但是喜歡@songyuanyao理所當然指出,c_str()方法返回const char*,所以你不能直接使用它。您應該首先分配內存,然後將字符串內容複製到它。

pWeapon->szName = new char[strName.length() + 1]; 
strcpy_s(pWeapon->m_mData, strName.length()+1, strName.c_str()); 

您將有免費類的析構pWeapon->szName並確保,當你重新分配指針內存不會泄露出去。由於std::string自動完成所有這些工作,所以最好使用它而不是指針。

+1

「使用strName.c_str()方法來獲取char *指針」。不,你會得到'const char *'。 – songyuanyao

相關問題