У меня проблема с перегруженным оператором + и потоком <<.У меня есть класс с перегруженными операторами: </p>
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;
}
Намерено напечатать что-то подобное (3, 4.3, 5.1), когда я наберу cout << fuzzyNumber ;.Он работает нормально, более того, он также отлично работает: </p>
FuzzyNumber fuzzyNumber = numA + numB;
cout << "A + B = " << fuzzyNumber << endl;
, где numA
и numB
- это типы FuzzyNumber.Хотя программа перестает работать, когда я заменяю указанную выше строку следующим образом:
cout << "A + B = " << (numA + numB) << endl;
Возможно, что-то не так с оператором по умолчанию =, но в этом классе нет динамических переменных, поэтому не должно.
Заранее спасибо за помощь!