Question:
I am trying to overload the istream operator >> to work with type “bool”. From my point of view the code looks okay, except the VC++ 6.0 compiler tells me:
binary '>>' : no operator defined which takes a right-hand operand of type 'bool'
Here is my code snipet:
// overloaded operator declaration:istream &operator> > (istream &, bool &);// overloaded function:istream &operator>> (istream &input, bool &key) { int test; input >> test; if (test != 0) key = true; else key = false; return input;}// code used in main:cout > testKey;
Answer:
C++ already defines an overloaded version of istream’s operator>> for type bool. You shouldn’t try to do it yourself. Note also that operator>> (as well as all the components of the Standard Library) are now declared in namespace std. You tried to overload it globally, and hence, the compiler didn’t complain about re-definitions.First, make sure to include
#includeusing namespace std; //using directiveint main{ //...}