Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 运算符new-为什么运算符new使用负值分配数组 模板类信号{ 受保护:int N;//数组的长度 公众:T*sig ;; 信号fft(); } 模板信号::fft(){ 如果(N==1)返回*this; 如果(N%2!=0) 你可以在哪里初始化this-_C++_Arrays_New Operator - Fatal编程技术网

C++ 运算符new-为什么运算符new使用负值分配数组 模板类信号{ 受保护:int N;//数组的长度 公众:T*sig ;; 信号fft(); } 模板信号::fft(){ 如果(N==1)返回*this; 如果(N%2!=0) 你可以在哪里初始化this-

C++ 运算符new-为什么运算符new使用负值分配数组 模板类信号{ 受保护:int N;//数组的长度 公众:T*sig ;; 信号fft(); } 模板信号::fft(){ 如果(N==1)返回*this; 如果(N%2!=0) 你可以在哪里初始化this-,c++,arrays,new-operator,C++,Arrays,New Operator,运算符new-为什么运算符new使用负值分配数组 模板类信号{ 受保护:int N;//数组的长度 公众:T*sig ;; 信号fft(); } 模板信号::fft(){ 如果(N==1)返回*this; 如果(N%2!=0) 你可以在哪里初始化this->sig?如何使0x0062b9f8为负值?地址从来都不是负值。而且你似乎从来没有设置N任何有用的值。N%2!=0测试N是否为偶数,而不是它是否为2的幂。要测试2的幂,你需要做些什么像N&(N-1)(这个表达式重置低阶位。如果数字是二的幂,则只

运算符new-为什么运算符new使用负值分配数组
模板类信号{
受保护:int N;//数组的长度
公众:T*sig ;;
信号fft();
}
模板信号::fft(){
如果(N==1)返回*this;
如果(N%2!=0)

你可以在哪里初始化
this->sig
?如何使0x0062b9f8为负值?地址从来都不是负值。而且你似乎从来没有设置
N
任何有用的值。
N%2!=0
测试
N
是否为偶数,而不是它是否为2的幂。要测试2的幂,你需要做些什么像
N&(N-1)
(这个表达式重置低阶位。如果数字是二的幂,则只设置一个位,重置结果为0。)我有一个初始化这个的构造函数。sig:template Signal::Signal(int length){N=length;M=1;sig=new T[N];t0=0;deltaT=1;for(int I=0;i60)setFlag(1);else setFlag(0);}我同意你的观点James Kanze,我不想检查N是偶数还是奇数,我想检查的是2的幂,所以我会改变这个条件。但是我如何得到偶数的值。sig是0x0062b9f8{-84215051}?
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;
        }