2012-07-08 78 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

相关问题