template <class T> class Signal {
protected: int N; // length of array
public: T *sig;
Signal<T> fft();
}
template <class T> Signal<T> Signal<T>::fft() {
if (N==1) return *this;
if (N%2!=0)
cout<<"N is not power of 2";
else{
Signal<T> even;
even.sig=new T[N/2];
Signal<T> odd;
Signal<T> esig;
Signal<T> osig;
Signal<T> y;
y.sig=new T[N];
for (int i=0;i<N/2;i++) {
even.sig[i]=sig[2*i]; /* I failed here because new operator allocate array with negative value*/
}
esig= even.fft();
odd = even;
for (int i=0;i<N/2;i++) {
odd.sig[i]=sig[2*i+1];
}
osig= odd.fft();
/*not importan part*/
}
return y;
}
这是我班级中代表Signal的一部分。我只显示失败的方法fft的一部分。
我得到错误Invalide分配大小4294967295在我放评论的行。当我调试时,我得到了even.sig的值为0x0062b9f8 {-842150451}。 我怎样才能解决这个问题,得到的数据不是负数。