我正在尝试重载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 ;
答案 0 :(得分:2)
这不是变量声明:
Person a();
是函数声明。声明变量的正确代码是:
Person a;