我有类Signal和Image,两个类都有相同名称但输入和输出参数不同的方法。是允许的吗?
template <class T> class Signal {
Signal<T> zeroPadding(Signal<T>);
}
template <class T> class Image:public Signal<T>
{
public:
Image(void);
~Image(void);
Image(int,int);
Image(int,int,double);
Image(int,int,double,double);
Image<T> zeroPadding(Image<T>);
template <class T> Image<T>::Image(int width,int height):Signal(width,height) {}
template <class T> Image<T>::Image(int width,int height,double dt):Signal(width,height,dt) {}
template <class T> Image<T>::Image(int width,int height,double dt,double t0 ):Signal(width,height,dt,t0) {}
template <class T> Image<T> Image<T>::zeroPadding(Image<T> im2){
Image<T> i1 =(*this);
Image<T> i2 =im2;
if (i1.getHeight()==im2.getHeight()){
i2.zeroPadding(i1); /* I want to call zeroPadding function from class Signal<T>. How I can convert i1 and i2 to class Signal<T> without initialization?*/
}
}
答案 0 :(得分:0)
当然,基类和后代允许使用具有不同参数和返回类型的相同名称的方法。
要从后代的方法调用基类的函数,但是,基类的方法必须是可见。在问题的示例代码中,Signal<T>::zeroPadding
是私有的,因此只有直接属于Signal<T>
(及其朋友,但不一定是后代)的方法中的代码才能调用该函数。
要从Signal<T>::zeroPadding
拨打Image<T>::zeroPadding
,前者至少需要受保护的可见性。