Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VisualAge
Expertise: Beginner
Dec 16, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Overloading istream operator >> for bool

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;
      key = false;
   return input;

// code used in main:
cout << "\nPress 0 to exit this program or any key to continue.\n:";
cin >> testKey;

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:

using namespace std; //using directive
int main
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date