2012-07-08 83 views
-3

我讀了六個與此錯誤有關的論壇主題,大部分是由於字符串聲明和其餘與這個問題無關。錯誤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包含linemaxDistance的字段。

據我所知,這兩行代碼與我使用的方法的例外是相同的。

那麼,爲什麼會出現這個錯誤「錯誤C2679:二進制‘=’:沒有操作員發現這需要類型‘設置’的右側操作數」

+1

'matchSet.corrections'的確切類型是什麼? – Mat 2012-07-08 20:28:58

+0

糾錯T - @Matteo Italia糾正了我的錯誤 – 2012-07-09 04:08:23

回答

2

從我所知,這兩條線代碼與我正在使用的方法除外。

不,他們是完全不同的;一個實例化一個新對象,調用Set<Lexicon::CorrectionT>的拷貝構造函數;另一個將右側的對象複製到左側的(已經創建的)對象上,調用賦值運算符,該賦值運算符出於某種原因不可用。

它是否已在Set<>執行?什麼類型是matchSet.corrections和什麼樣的返回類型suggestCorrections

+0

,因爲我寫的問題變得很明顯。左邊是一個Set ,右邊是一個結構體 – 2012-07-08 20:40:26

相關問題