【发布时间】:2014-01-05 08:51:44
【问题描述】:
我有 Signal 和 Image 类,这两个类都有同名但输入参数和输出参数不同的方法。是否允许?
template <class T> class Signal {
public:
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);
Signal<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> Signal<T> Image<T>::zeroPadding(Image<T> im2){
Image<T> i1 =(*this);
Image<T> i2 =im2;
if (i1.getHeight()==i2.getHeight()){
....
return(im2);
}
}
}
int main() {
Image<int> *a=new Image<int>(2,3);
Image<int> *b=new Image<int>(1,3);
(*a).zeroPadding(*b); //when I try to debug it failed with error error LNK2019:
//unresolved external symbol
//"public: __thiscall Signal<int>::~Signal<int>(void)" (??1?$Signal@H@@QAE@XZ)
//referenced in function
//"public: __thiscall Image<int>::~Image<int>(void)" (??1?$Image@H@@QAE@XZ)
}
另一个问题:如果我想调用主函数 (*a).Signal::zeroPadding(*b) 怎么办?如何将 (*a) 和 (*b) 转换为 Signal?
【问题讨论】:
-
请实现 Signal
zeroPadding(Signal ) -
您昨天已经发布了此代码。它仍然在语法上被破坏了。
-
减一表示再次发帖(假设@jrok 是对的)
-
我在 Signal 类中实现了 zeroPadding,而我的 Signal 类与 Image 类不在同一个文件中,但我将它们放在一起,这样您就可以在两个类中看到声明。
标签: c++ inheritance implicit-conversion base derived-class