我正在使用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
我不知道如何声明方法以便它可以工作。我尝试删除virtual
和const
,但这不起作用。有谁知道我可能做错了什么?
答案 0 :(得分:1)
啊哈!我发现了我做错了什么。
virtual bool impl(const NSString *& A, const NSString *& B) const
应该是
virtual bool impl(NSString *& A, NSString *& B) const
就像编译器说的那样。