我阅读了与此错误相关的六个论坛主题,其中大多数是由于字符串声明,其余与此问题无关。
此错误出现在接受输入字符串的程序中,将其与字符串列表进行比较,然后返回接近匹配的字符串。这个简单的解释就是要点,实际的实现还有更多的意义。
在编译和工作的测试实现中,我使用了这行代码
Set<Lexicon::CorrectionT> matches = lex.suggestCorrections(line, maxDistance);
Set 是我从 CS106B 课程中重用的一个类(使用 bst 类),而 Lexicon 是我编写的课程中的另一个类,现在正在为一个不相关的项目重用。该函数suggestCorrections
接受一个字符串line
和一个编辑距离,然后比较该字符串并返回一个Set
建议。
我将这一行修改为
matchSet.corrections = lex.suggestCorrections(matchSet);
通过CorrectionT
在 a 中定义更正Lexicon::MatchesT matchSet
并matchSet
在前面的函数中定义,然后将其作为参考传递。MatchesT
包含 和 的line
字段 maxDistance
。
据我所知,除了我使用的方法之外,这两行代码是相同的。
那么,为什么我会收到此错误“错误 C2679:二进制 '=':未找到采用 'Set' 类型的右手操作数的运算符”