VC6.0的INTERNAL COMPILER ERROR错误 (转)

作者在 2014-02-05 09:37:48 发布以下内容
今天复习关于运算符重载这一章节,以前学习的时候用的是gcc编译器, 在VC6.0的时候会遇到莫名其妙的问题:

--------------------Configuration: integer1 - Win32 Debug--------------------
Compiling...
integer.cpp
D:\My Documents\我的工程\integer1\integer.cpp(9) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 1786) 
         Please choose the Technical Support command on the Visual C++ 
         Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.

integer1.exe - 1 error(s), 0 warning(s)

有人说是VC的一个BUG,我想只是某种形式的对标准C++的不支持吧。我发现:

我们在运算符重载的时候,不能在开头写上:using namespace std;
所有的cout, endl都写成std::cout, std::endl就可以通过编译,否则就会出现上面的错误。但是如果所有的运算符重载都是成员函数的时候,却可以加上using namespace std;

怪否???


#include <iostream>
// VC6.0中,运算符重载,下面的声明会导致错误

// using namespace std;


class integer {
    int i;
public:
    integer(int ii) : i(ii) {}
    friend const integer
        operator+(const integer& rl);
    friend const integer
        operator-(const integer& rl);
    friend const integer
        operator++(integer& rl);
    friend const integer
        operator++(integer& rl, int);
    friend const integer
        operator--(integer& rl);
    friend const integer
        operator--(integer& rl, int);
    void print() const {
        std::cout << "i: " << i << std::endl;
    }
};

const integer
operator+(const integer& rl) {
    return integer(+rl.i);
}
const integer
operator-(const integer& rl) {
    return integer(-rl.i);
}
const integer
operator++(integer& rl) {
    ++rl.i;
    return integer(rl.i);
}

const integer
operator++(integer& rl, int) {
    integer before(rl.i);
    rl.i++;
    return before;
}

const integer
operator--(integer& rl) {
    return integer(--rl.i);
}
const integer
operator--(integer& rl, int) {
    integer before(rl.i);
    rl.i--;
    return before;
}

int main() {
    integer i(-1);
    (+i).print();
    (-i).print();
    ++i;
    i.print();
    i++;
    i.print();
    --i;
    i.print();
    i--;
    i.print();

}

原文:http://blog.chinaunix.net/uid-16318340-id-2748772.html
C++ | 阅读 2882 次
文章评论,共0条
游客请输入验证码