嗨假设我有这样调用从基类派生类的功能,无需使用虚拟函数
// base class
class A {
public:
int CallMyFct(PtrToFCT what){
return what(10);
}
};
class B : public A {
int myInt;
public:
B():myInt(10){}
int myFct1(int val){
return myInt+val;
}
int myFct2(int val){
return myInt*2+val;
}
void Call(void){
int rez1=CallMyFct(&myFct1);
if (rez1!=20)
cout << "You are wrong" << endl;
int rez2=CallMyFct(&myFct2);
if (rez2!=30)
cout << "You are wrong" << endl;
}
};
代码现在我需要调用这些MyFct1,MyFct2等从基类,但我不能使用虚拟功能。所以它就像继承的倒置一样。我不知道这是否可能。你认为mem_fun或其他适配器功能可以在这里工作吗?
我实际上需要弄清楚什么是PtrToFCT,以及如何在CallMyFCT中传递myFct1。
感谢
[CRTP(https://secure.wikimedia.org/wikipedia/en/wiki/Curiously_recurring_template_pattern)可以帮助 – rlduffy