【发布时间】:2011-05-10 23:38:14
【问题描述】:
我遇到了重载 operator+ 和 stream
FuzzyNumber& FuzzyNumber::add(FuzzyNumber B)
{
FuzzyNumber fuzzyResult;
fuzzyResult.setA(this -> getA() + B.getA() );
fuzzyResult.setB(this -> getB() + B.getB() );
fuzzyResult.setC(this -> getC() + B.getC() );
return fuzzyResult;
}
FuzzyNumber& operator+(FuzzyNumber& A, FuzzyNumber& B)
{
return A.add(B);
}
All fields inside class are double type. Here is overloaded ostream operator>>
ostream& FuzzyNumber::streamWrite(ostream& outStream)
{
outStream << "( "
<< this -> getA() << ", "
<< this -> getB() << ", "
<< this -> getC() << ")";
return outStream;
}
ostream& operator<< (ostream& outStream, FuzzyNumber& fuzzyNumber)
{
fuzzyNumber.streamWrite(outStream);
return outStream;
}
当我输入 cout
FuzzyNumber fuzzyNumber = numA + numB;
cout << "A + B = " << fuzzyNumber << endl;
其中 numA 和 numB 是 FuzzyNumber 类型。
虽然当我用这个替换上面的行时程序停止运行:
cout << "A + B = " << (numA + numB) << endl;
可能是默认的operator=有问题,但是这个类中没有动态变量,所以不应该。
提前感谢您的帮助!
【问题讨论】:
-
定义“停止运行”。你的意思是它崩溃了?锁了?不编译?
-
“停止运行”是什么意思?
标签: c++ operator-overloading stream