Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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 << "\nPress 0 to exit this program or any key to continue.\n:";
cin >> 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 directive
int main
{
 //...
}
DevX Pro
 
Comment and Contribute

 

 

 

 

 


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

 

 

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