I have class Signal and Image and both classes have method with same name but different input and output parameters. Is it allowed?
  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?*/
        }
}
 
    