Path: utzoo!attcan!uunet!cs.utexas.edu!yale!husc6!genrad!charlie From: charlie@genrad.com (Charlie D. Havener) Newsgroups: comp.lang.c++ Subject: enum bug in Turbo C++ and Zortech. Can't overload << operator for enums Keywords: enum bug C++ Turbo Zortech Message-ID: <37788@genrad.UUCP> Date: 2 Jul 90 17:03:54 GMT Sender: news@genrad.UUCP Lines: 48 // enum.cxx - experiment with overloading << for enums // Charlie Havener - GenRad Inc. charlie@genrad.com // Both Zortech 2.06, 2.1 and Borland Turbo C++ Get this wrong! #include // must be iostream.h for Borland Turbo C++ enum color {SKIPZERO,RED,BLUE,GREEN}; ostream& operator<<(ostream& os,color tint); main() { int k = 99; cout << (color)BLUE << "\n"; // fails because cout is ostream_withassign // supposedly fixed in AT&T 2.1 // next line will actually ouput text strings for RED etc // except Zortech complains at compile time and Borland // fails at run time, it merely puts out integers cout << k << " " << RED << " " << BLUE << RED << GREEN << "\n"; cout << GREEN << "\n"; // fails because cout is ostream_withassign } ostream& operator<<(ostream& os,color tint) { switch ( tint ) { case RED: cout << "RED"; break; case BLUE: cout << "BLUE"; break; case GREEN: cout << "GREEN"; break; case SKIPZERO: default: cout << "color?"; } return os; } /* sample output from Sun C++ ( AT&T cfront 2.0 ) 2 99 RED BLUEREDGREEN 3 */