钱能 《 C++程序设计教程》 18章运算符重载P399例子出错,result是怎么回事啊?
#include<iostream>
using namespace std;
class RMB
{
public:
RMB(unsigned int d,unsigned int c);
friend RMB operator +(RMB&,RMB&);
friend RMB operator ++(RMB &);
void display()
{
cout<<(yuan+jf/100.0)<<endl;
}
protected :
unsigned int yuan;
unsigned int jf;
};
RMB ::RMB(unsigned int d,unsigned int c)
{
yuan=d;
jf=c;
while(jf>=100)
{yuan++;
jf-=100;
}
}
RMB operator+(RMB&s1,RMB&s2)
{
unsigned int jf=s1.jf+s2.jf;
unsigned int yuan=s1.yuan+s2.yuan;
RMB result(yuan,jf);
return result;
}
RMB& operator ++(RMB& s)
{
s.jf++;
if(s.jf>=100)
{
s.jf-=100;
s.yuan++;
}
return s;
}
void main()
{
RMB d1(1,60);
RMB d2(2,50);
RMB d3(0,0);
d3=d1+d2;
++d3;
d3.display();
}
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