class A{
virtual int foo1(int a){
return foo1_1(a,filler(a));
}
template<typename FunctionPtr_filler>
int foo1_1(int a, FunctionPtr_filler ptrFn)
{
int b;
b = (this->*ptrFn)(a); // --> compile error: pointer to member type int (B::)(int) incompatible with object type A
return b;
}
protected:
virtual int filler(int a){
return a*a;
}
};
class B: public A{
virtual int foo1(int a){
return foo1_1(a, &B::filler);
}
virtual int filler(int a){
return (a+a);
}
};
他们有什么方法可以克服这个错误。我想通过填充函数并避免重复代码的代码气味。