クラス演算子を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、constの人&O)は、' 'Osaba'と' Person'の関係は –
は何ですか? –
[MCVE]を投稿してください。 –