0

dtl-cppを使用して、2 つのファイルの違いを 1 行ずつ比較しています。

このコンパレータを設定しました:

class LBCompareNSString : public dtl::Compare<NSString *> {
public:
  virtual bool impl(const NSString *& A, const NSString *& B) const {
    return [A isEqualToString:B];
  }
};

NSStringカスタム コンパレータのように、オブジェクトの 2 つのベクトルがあります。

std::vector<NSString *> linesInACxx;
std::vector<NSString *> linesInBCxx;

そして、次のように dtl-cpp をセットアップしました。

LBCompareNSString comparator;
dtl::Diff< NSString *, std::vector<NSString *>, LBCompareNSString > dtlEngine(linesInACxx, linesInBCxx, comparator);
dtlEngine.compose();

ただし、コンパイルすると、Diff.hpp で次のエラーが発生します。

Diff.hpp:506: error: no matching function for call to 'LBCompareNSString::impl(NSString*&, NSString*&)'
LBDifferenceEngine.mm:7: note: candidates are: virtual bool LBCompareNSString::impl(const NSString*&, const NSString*&) const

メソッドを宣言する方法がわからないので、機能します。削除しようvirtualとしconstましたが、うまくいきませんでした。私が何を間違えたのか誰か知っていますか?

4

1 に答える 1

1

あはは!私は自分が間違っていたことを発見しました。

virtual bool impl(const NSString *& A, const NSString *& B) const

する必要があります

virtual bool impl(NSString *& A, NSString *& B) const

コンパイラが言うように。

于 2011-07-14T17:48:46.867 に答える