我想重载istream(>>)的类运算符,出于某种原因我得到错误Ambiguous overload for operator>>
。 ostream的运营商完美运作,但istream却不行。 有人知道为什么吗?类运算符的模糊过载>>
#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
我得到了行错误:fajl >> a ;
'朋友的ostream&运算符<<(ostream的和OS,常量人&O)' –
什么是'Osaba'和'Person'之间的关系? –
请发布[MCVE]。 –