Добрый день.
Есть MSVC2010 и есть код:
class a{
public:
virtual int fun1(int i,int a){return a+1;}
virtual float fun2(int i,int a,float b){return a+b+1;}
virtual double fun3(int i,int a,float b,double c){return a+b+c+1;}
};
class b: public a{
a array1[10];
public:
virtual int fun1(int i,int a){
if(i>=10) return a::fun1(i,a); else return array1[i].fun1(i,a);
}
virtual float fun2(int i,int a,float b){
if(i>=10) return a::fun2(i,a,b); else return array1[i].fun2(i,a,b);
}
virtual double fun3(int i,int a,float b,double c){
if(i>=10) return a::fun3(i,a,b,c); else return array1[i].fun3(i,a,b,c);
}
};
int main(int argc,char* argv[]){
b bb;
cout<<"\n"<<bb.fun3(1,2,3,4);
}
Можно легко заметить, что методы класса b построены по одному алгоритму.
В связи с этим хотелось бы написать шаблон, в который передавать соответствующий метод класса a.
Однако из-за того, что прототипы методов разные, то шаблон написать не получается.
Вопрос:
1. Можно ли такую задачу решить шаблоном или придется тупо руками писать все методы класса b?
Спасибо