首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

warning C4717: “operator>>”: 如递归全部控件路径,函数将导致运行时堆栈溢出

2013-02-24 
warning C4717: “operator”: 如递归所有控件路径,函数将导致运行时堆栈溢出#includeiostreamusing nam

warning C4717: “operator>>”: 如递归所有控件路径,函数将导致运行时堆栈溢出
#include<iostream>
using namespace std;
class rational
{
public:
rational(int molecule=0,int denominator=0)
{this->molecule=molecule;
     this->denominator=denominator;
int k;
k=yue(this->molecule,this->denominator);
cout<<k;
if(k!=0)
{cout<<"正在化简中..."<<endl;
  this->molecule/=k;
  this->denominator/=k;
  cout<<"化简成功"<<endl;}}
void display()
{
cout<<"("<<molecule<<"/"<<denominator<<")"<<endl;}
rational operator+(const rational &r1) const;
rational operator-(const rational &r1) const;
rational operator*(const rational &r1) const;
rational operator/(const rational &r1) const;
  friend istream & operator>>(istream &in,const rational &r1);
friend ostream & operator <<(ostream &out,const rational &r1);
private:
    int molecule,denominator;
    int yue(int n,int m){
int k=0;
for(int i=2;i<=m && i<=n;i++)
if(n%i==0 && m%i==0)
             k=i;
return k;}
};
rational rational::operator+(const rational &r1) const
{
return rational(molecule*r1.denominator+r1.molecule*denominator,denominator*r1.denominator);
}
rational rational::operator-(const rational &r1) const
{
return rational(molecule*r1.denominator-r1.molecule*denominator,denominator*r1.denominator);
}
rational rational::operator*(const rational &r1) const
{
return rational(molecule*r1.molecule,denominator*r1.denominator);
}
rational rational::operator/(const rational &r1) const
{
return rational(molecule*r1.denominator,denominator*r1.molecule);
}
ostream & operator <<(ostream &out,const rational &r1) 
{     out<<"("<<r1.molecule <<"/"<<r1.denominator<<")" <<endl;
      return out;
}
istream &operator >>(istream &in,const rational &r1)  //这里是死循环?第一次重载这个。谢谢大家
{     in>>r1.molecule;
       in>>r1.denominator;
     return in;
}                                                     //程序会循环构造函数直至程序崩溃

int main()
{
rational r3;
r3.display();
cin>>r3;
cout<<r3;
}
[解决办法]
istream &operator >>(istream &in,rational &r1)//const是不能有的

热点排行