このエラーに関連する 6 件のフォーラム スレッドを読みましたが、そのほとんどは文字列宣言によるもので、残りはこの問題とは関係ありませんでした。
このエラーは、入力文字列を受け取り、それを文字列のリストと比較して、近似一致する文字列を返すプログラムで発生します。その簡単な説明が要点であり、実際の実装はもう少しです。
コンパイルして動作するテスト実装では、このコード行を使用しました
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
私の知る限り、これら 2 行のコードは、使用しているアプローチを除いて同一です。
では、なぜ「エラー C2679: バイナリ '=' : タイプ 'Set' の右側のオペランドを取る演算子が見つかりません」というエラーが発生するのはなぜですか?