我有这样的代码:
class A{ // declaration is simplified
virtual void FNC1();
};
bool compare(S s1,S s2){
return s1<s2;
}
void A::FNC1(){
iterator it;
sort(it.begin(),it.end(),compare);
}
class B : public A{
virtual void FNC1();
};
void B:FNC1(){
iterator it;
// do something different
sort(it.begin(),it.end(),compare);
}
所以我用B类继承A类并覆盖了函数FNC1(),但问题是,在std::sort()函数中,第三个变量应该是一个函数,而这样的函数总是直接声明的。我真的很想知道如何避免复制和粘贴并使B直接继承此功能。我试图将 compare() 函数作为 A 的成员函数,它不会编译:sort(it.begin(), it.end(), this->compare);
我试图将比较函数包含到一个单独的头文件中,它说我不能声明它。我怎样才能正确地让 B 继承这个函数?因为,实际上,我有 3 个类都需要重用 A 的代码,而比较函数确实是一个复杂的函数。