[comp.lang.c++] zortech bug

srwmrbd@windy.dsir.govt.nz (ROBERT) (04/16/89)

// example of incorrect output from zortech version 1.07
// when << is extended to structures

#ifdef ZORTECH
   #include <stream.hpp>
#else
   #include <xstream.hxx>
#endif

class ExtInt
{
   int value;
public:
   ExtInt operator+(ExtInt&);
   friend ostream& operator<<( ostream&, ExtInt& );
   ExtInt(int v) { value=v; }
};

main()
{
   ExtInt a1=15; ExtInt a2=3;
   cout << a1 <<" "<< a2 <<"\n";
   cout << a1+a1 <<" "<< a1+a2 <<"\n";        // produces incorrect output
   cout << a1+a1 <<" "; cout << a1+a2 <<"\n"; // produces correct output
}

ExtInt ExtInt::operator+(ExtInt& er)  { return ExtInt(value+er.value); }

ostream& operator<<(ostream& os, ExtInt& er)  { os << er.value; return os; }