devxlogo

Overloading istream operator >> for bool

Overloading istream operator >> for bool

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 rather than the deprecated . Also, use an appropriate using-declaration or using-directive to access the overloaded operator>>, as follows:

#include using namespace std; //using directiveint main{ //...}

devx-admin

Share the Post: