我读了六个与此错误有关的论坛主题,大部分是由于字符串声明和其余与这个问题无关。错误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