У меня есть класс 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?*/
}
}
Можете ли вы исправить свое форматирование, чтобы сделать это доступным для чтения? – Chad
Отметьте имя: 'i2.Signal :: zeroPadding (i1);' Квалифицированное имя указывает, где искать функцию. 'i1' автоматически преобразуется в' Shape' путем [slicing] (http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c). Конечно, ваш код странный. Почему вы делаете копию 'this' в функции? –
jrok
Я считаю, что вы можете 'static_cast &> (i2) .zeroPadding (i1);' также. См.: Http://ideone.com/ej1C1T –
Chad