我讀了六個與此錯誤有關的論壇主題,大部分是由於字符串聲明和其餘與這個問題無關。錯誤C2679:二進制'=':找不到操作符,它需要一個類型爲'Set <ElemType>'的右側操作數'
該錯誤發生在一個程序中,該程序需要輸入字符串,將其與字符串列表進行比較,然後返回緊密匹配的字符串。這個簡單的解釋是要點,實際的實現有一點點。
在這種編譯和工作的測試實現,我用這行代碼
Set<Lexicon::CorrectionT> matches = lex.suggestCorrections(line, maxDistance);
集是一個類(使用BST類),我從一個CS106B當然重用和詞彙是從另一個類當然,我寫了,現在正在重複使用一個不相關的項目。函數suggestCorrections
需要一個字符串line
和一個編輯距離,然後比較該字符串並返回Set
的建議。
我通過定義CorrectionT
更正一個Lexicon::MatchesT matchSet
內和在前述的函數限定matchSet
,然後將它作爲一個參考修改了線這一
matchSet.corrections = lex.suggestCorrections(matchSet);
。 MatchesT
包含line
和maxDistance
的字段。
據我所知,這兩行代碼與我使用的方法的例外是相同的。
那麼,爲什麼會出現這個錯誤「錯誤C2679:二進制‘=’:沒有操作員發現這需要類型‘設置’的右側操作數」
'matchSet.corrections'的確切類型是什麼? – Mat 2012-07-08 20:28:58
糾錯T - @Matteo Italia糾正了我的錯誤 – 2012-07-09 04:08:23