-3

我阅读了与此错误相关的六个论坛主题,其中大多数是由于字符串声明,其余与此问题无关。

此错误出现在接受输入字符串的程序中,将其与字符串列表进行比较,然后返回接近匹配的字符串。这个简单的解释就是要点,实际的实现还有更多的意义。

在编译和工作的测试实现中,我使用了这行代码

Set<Lexicon::CorrectionT> matches = lex.suggestCorrections(line, maxDistance);

Set 是我从 CS106B 课程中重用的一个类(使用 bst 类),而 Lexicon 是我编写的课程中的另一个类,现在正在为一个不相关的项目重用。该函数suggestCorrections接受一个字符串line和一个编辑距离,然后比较该字符串并返回一个Set建议。

我将这一行修改为

matchSet.corrections = lex.suggestCorrections(matchSet);

通过CorrectionT在 a 中定义更正Lexicon::MatchesT matchSetmatchSet在前面的函数中定义,然后将其作为参考传递。MatchesT包含 和 的line字段 maxDistance

据我所知,除了我使用的方法之外,这两行代码是相同的。

那么,为什么我会收到此错误“错误 C2679:二进制 '=':未找到采用 'Set' 类型的右手操作数的运算符”

4

1 回答 1

2

据我所知,这两行代码除了我使用的方法外是相同的。

不,它们完全不同。一个实例化一个新对象,调用 的复制构造函数Set<Lexicon::CorrectionT>;另一个将右边的对象复制到左边的(已经创建的)对象,调用赋值运算符,由于某种原因,它不可用。

实施了Set<>吗?什么类型是matchSet.corrections什么返回类型有suggestCorrections什么?

于 2012-07-08T20:36:46.920 回答