演算子のオーバーロードを学習しようとしていますが、最初の試行でエラーが発生しました。
template<typename T>
class Pair
{
public:
T x; T y;
Pair(T x, T y): x(x), y(y){};
~Pair(){};
/* data */
};
template<typename T>
ostream& operator<<(ostream &os, const Pair<T> &p)
{
return os<<"("<<p.x<<", "<<p.y<<")";
}
template<typename T>
istream& operator>>(istream &is, Pair<T> &p)
{
return is>>"(">>p.x>>", ">>p.y>>")";
}
次のことができるようになりたいです。
Pair<int> p;
cin>>p;
cout<<p;
また、Pair
オブジェクトに入力を与えるということは、 の(1, 2)
後cin
に を生成する入力として与えることができることを意味しますPair<int>
。
でコンパイル時エラーが発生しis>>"("
ます。これを修正する方法は何ですか?