2 firas Firas 于 2014.10.12 23:59 提问

77: error: expected unqualified-id before '^' token
c++
#define TO_SIGNED(x)    ((signed)(x))
class BigInteger{
protected:
    unsigned* array;

    BigInteger(unsigned*const theArray){
        array = theArray;
    }

    inline unsigned* getArray(){
        if(this == BigIntegerNull)
        #ifdef _EXCEPTION_H_
            throw NullPointerException();
        #else
            return NullArray;
        #endif
        return array;
    }

    BigInteger expand(unsigned newSize, bool extendSign){
        if(getArray() == NullArray){
            BigInteger n(NullArray);
            return n;
        }
        if(newSize <= array[0]) return *(new BigInteger(*this));
        BigInteger nbi(new unsigned[newSize+1]);
        register unsigned i;
        for(i = 0; i <= array[0]; i++) nbi.array[i] = array[i];
        if(extendSign && TO_SIGNED(array[array[0]]) < 0){
            for(; i <= newSize; i++) nbi.array[i] = -1;
        }else{
            for(; i <= newSize; i++) nbi.array[i] = 0;
        }
        return nbi;
    }
public:

    static BigInteger*const BigIntegerNull;
    static unsigned*const NullArray;

    BigInteger(const BigInteger& origin){
        #ifdef _EXCEPTION_H_
        if(origin.getArray() == NullArray)
            throw NullPointerException();
        #endif
        register unsigned size = origin.array[0]+1;
        array = new unsigned[size];
        do{
            --size;
            array[size] = origin.array[size];
        }while(size > 0);
    }

    BigInteger _xor(BigInteger bi, bool extendSign){
        if(getArray() == NullArray || bi.getArray() == NullArray){
            BigInteger n(NullArray);
            return n;
        }
        register unsigned i;

        if(array[0] <= bi.array[0]){
            for(i = array[0]; i > 0; i--) array[i] &= bi.array[i];
        }else{
            for(i = 1; i <= bi.array[0]; i++){
                array[i] ^= bi.array[i];
            }
            if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
                for(; i <= array[0]; i++){
                    array[i] = -1;  // or -1
                }
            }
        }

        return *this;
    }

    BigInteger xor(BigInteger bi, bool extendSign){    // 编译器指示错误的行
        BigInteger n(NullArray);
        if(getArray() == NullArray || bi.getArray() == NullArray){
            return n;
        }
        register unsigned i;
        if(array[0] <= bi.array[0]){
            n = this->expand(bi.array[0], extendSign);
            for(i = array[0]; i > 0; i--){
                n.array[i] ^= bi.array[i];
            }
            if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
                for(; i <= bi.array[0]; i++){
                    n.array[i] = ~bi.array[i];  // xor -1
                }
            }else{
                for(; i <= bi.array[0]; i++){
                    n.array[i] = bi.array[i];   // xor 0
                }
            }
        }else{
            n = *(new BigInteger(*this));
            for(i = 1; i <= bi.array[0]; i++){
                n.array[i] ^= bi.array[i];
            }
            if(extendSign && TO_SIGNED(bi.array[bi.array[0]]) < 0){
                for(; i <= array[0]; i++){
                    n.array[i] = ~array[i]; // xor -1
                }
            }
        }
        return n;
    }
};
BigInteger*const BigInteger::BigIntegerNull = reinterpret_cast<BigInteger*>(0);
unsigned*const BigInteger::NullArray = reinterpret_cast<unsigned*>(0);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
expected unqualified-id before '(' token
编译c++的工程,引用头文件, 报错:expected unqualified-id before '(' token 扯淡的问题,害了我浪费好长时间 最终发现,和cpp中调用, 头文件的调用顺序有关系, 之前队友的代码头文件调用关系混乱,经过梳理头文件的调用顺序,此问题解决. 这个问题的解决办法就是:梳理头文件的调用顺序,避免一个头文件被多次引用
error: expected unqualified-id before ‘}’ token
error: expected unqualified-id before ‘}’ token 原因: C++ 头文件定义中类的定义后没有加分号“;”   特此共享
linux error: expected unqualified-id before '[' token 报错系列
make编译时常会如下系列错误(使用的是调用厂商提供的h文件,其中的定义有的是和自己工程有同名的现象)   error: expected unqualified-id before '[' token error: expected unqualified-id before ';' token   对同名的最好是区分开,比如windows中用 HWND,在linux里用HWND_LL
error: expected unqualified-id before ‘decltype’
今天在做读入一组整数并把它们存入一个vector对象,要求先输出第一个和最后一个元素的和,接着输出第二个和倒数第二个元素的和,以此类推。 下面是我的程序: #include #include using namespace std; int main(void) { vector ivec; int num; cout<<"请输入你的整数,按Crtl+d退出:"; while(ci
c++config.h:43: error: expected unqualified-id before 'namespace'解决
今天遇到一个错,一头雾水,又没提示程序哪里出错,报错如下: /usr/include/c++/4.1.0/i586-suse-linux/bits/c++config.h:43: error: expected unqualified-id before 'namespace' /usr/include/c++/4.1.0/i586-suse-linux/bits/c++config.h:47
错误:expected unqualified-id before ‘template’
比较上头的一个问题,找了好久,错误指示
expected unqualified-id before ....的问题
对于这种编译错误我大体分为以下几种情况: 1.定义类时最后没有写分号 Class **** { ... }; //就是这个分号 2.自定义函数与库函数重名(与关键字重复) 3.多写分号 例如在函数定义时 void F();//多写了 { ...... } 4.大括号使用不当 int main(){
expected unqualified-id before 'int'
Qt 5.1 升级后编译之前的代码,发现很诡异的问题。  error: expected unqualified-id before 'int'  error: expected '}' before 'int'  error: expected ',' or ';' before 'int'  error: expected declaration before '}
g++编译错误:expected unqualified-id before ‘using’
今天写了一个occi的C++程序,结果一编译就出了个莫名其妙的错误。 信息如下: g++ -c TDBPro.cpp -I/u01/oracle/rdbms/public -I./ TDBPro.cpp:3: 错误:expected unqualified-id before ‘using’    TDBPro.cpp 的第一行代码为头文件包含,第二行为空行,第三行就为using 命名空间
expected unqualified-id before numeric constant
ok!  如果你的问题正是此标题,那么下面看看我的错误是怎么产生的: 1、我在弄一个redis client 库,下载:https://github.com/nekipelov/redisclient 2、这个库使用boost 3、这个库里有CMakeLists.txt,但是我还是自己写了个makefile 那么问题来了,当我make的时候出现了上述的错误,引起问