错误C2679:二进制'=':找不到哪个运算符采用了类型为'Set <elemtype>'的右手操作数</elemtype>

时间:2012-07-08 20:25:40

标签: c++ struct

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

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

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

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包含linemaxDistance的字段。

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

那么,为什么我会收到此错误“错误C2679:binary'=':找不到哪个操作符采用'Set'类型的右手操作数”

1 个答案:

答案 0 :(得分:2)

  

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

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

是否已在Set<>中实施?什么类型是matchSet.corrections,哪种类型的返回类型有suggestCorrections