[英]C++ function that allows arbitrary class input
现在我有一个类A,它具有方法f:
class A{
public:
double f(double x){return 0.0;};
};
我有另一个类B和另一个方法f:
class B{
public:
double f(double x){return 0.0;};
};
我希望函数myfun使用A类或B类,而不必重载该函数:
double myfun(A a){
return a.f(1.0);
}
double myfun(B b){
return b.f(1.0);
}
我不想重载该函数,因为使用方法f()将有三个或更多不同的类。 有什么办法吗?
使用简单的模板功能:
template<typename T>
double myfun(T t) {
return t.f(1.0);
}
然后您将其命名为:
A a;
myfun(a);
B b;
myfun(b);
模板方法确实是已经提到的方法。 如果您对模板不满意,则可以通过继承获得相同的效果。
使用具有myFun虚拟(或纯虚拟)的基类,然后从该类派生每个后续类。
class Base {
public:
virtual double f(double x)=0;
}
class A : Base {
public :
double f (double x){return 0.0};
}
class B : Base {
public :
double f (double x}{return 1.0};
}
double myFun(Base b) {
return b.f(1.0);
}
这是另一种选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.