I am trying to overload the class operator for istream (>>) and I am getting the error Ambiguous overload for operator>>
for some reason. The operator for ostream works perfectly but istream does not.
Does someone know why?
#include <iostream>
#include <fstream>
using namespace std;
class Person
{
public:
Person(string name="Empty", int num=0)
:name(name), num(num){}
friend istream& operator>> (istream& is, Person& o)
{
is >> o.name>> o.num;
return is;
}
friend ostream& operator<< (ostream& os, Person& o)
{
return os << o.name<< " " << o.num<< endl;
}
private:
string name;
int num;
};
int main()
{
ifstream fajl("input.txt");
Person a();
fajl >> a ;
cout << a ;
}
input.txt:
Name1 15
Name2 16
I get the error in line: fajl >> a ;