没有与dtl-cpp调用...的匹配函数

时间:2011-07-14 17:41:06

标签: c++ objective-c++ dtl-cpp

我正在使用dtl-cpp逐行比较两个文件的差异。

我已经设置了这个比较器:

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

我有两个NSString个对象的向量,就像使用自定义比较器一样:

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

我不知道如何声明方法以便它可以工作。我尝试删除virtualconst,但这不起作用。有谁知道我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

啊哈!我发现了我做错了什么。

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

应该是

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

就像编译器说的那样。