今天帮别人回答问题的时候,用VC6.0测试了一下他的代码,因为这个编译器启动较快,这点比较喜欢,发现了以前一直没有注意的问题。
先贴出错误现象:
--------------------Configuration: 2 - Win32 Debug-------------------- Compiling... 2.cpp C:\Users\Administrator\Desktop\2.cpp(14) : 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 Error executing cl.exe. 2.obj - 1 error(s), 0 warning(s)
1.在VC6.0的代码中,用#include <iostream.h>
2.增加前导声明
代码如下:
//第一种方式 /* #include<iostream> using namespace std; class A; //前导声明 A operator+(A a, A b); //前导声明 */ //第二种方式 #include <iostream.h> class A { private: int x; public: A() : x(0) {} A(int a) : x(a) {} A(A &a) { x = a.x; } friend A operator+(const A &a1, const A &a2); void disp() { cout << x << endl; } }; A operator+(const A &a1, const A &a2) { A temp(a1.x + a2.x); return temp; } int main() { A a1(1), a2(3), temp; temp = a1 + a2; temp.disp(); return 0; }PS:经过这个事情更加觉得还是少用VC6.0的好,个人想法,仅供参考。