我阅读了与此错误相关的六个论坛帖子,其中大部分是由于字符串声明,其余与此问题无关。
此错误发生在接受输入字符串的程序中,将其与字符串列表进行比较,然后返回匹配的字符串。这个简单的解释是要点,实际的实现还有更多。
在编译和工作的测试实现中,我使用了这行代码
Set<Lexicon::CorrectionT> matches = lex.suggestCorrections(line, maxDistance);
Set是一个类(使用bst类)我从CS106B课程重用,Lexicon是我编写的课程中的另一个类,现在正在重用一个不相关的项目。函数suggestCorrections
采用字符串line
和编辑距离,然后比较字符串并返回Set
个建议。
我修改了这行
matchSet.corrections = lex.suggestCorrections(matchSet);
在CorrectionT
中定义Lexicon::MatchesT matchSet
更正并在前一个函数中定义matchSet
,然后将其作为参考传递。 MatchesT
包含line
和maxDistance
的字段。
据我所知,除了我正在使用的方法之外,这两行代码是相同的。
那么,为什么我会收到此错误“错误C2679:binary'=':找不到哪个操作符采用'Set'类型的右手操作数”
答案 0 :(得分:2)
不,他们完全不同;一个实例化一个新对象,调用据我所知,除了我正在使用的方法之外,这两行代码是相同的。
Set<Lexicon::CorrectionT>
的复制构造函数;另一个将右边的对象复制到左边的(已经创建的)对象,调用赋值运算符,由于某种原因,该运算符不可用。
是否已在Set<>
中实施?什么类型是matchSet.corrections
,哪种类型的返回类型有suggestCorrections
?