長いギャップの後でcppを更新し、演算子のオーバーロードメソッドを理解しようとしています。オブジェクトのメンバーを出力するために「operator<<」をオーバーロードしようとしました。でも友達機能を使わないとできません。フレンド関数を使わない方法を探しています。
これが私のクラス定義です:
class Add{
private:
int x;
public:
friend ostream& operator<<(ostream& ostr, Add const& rhs); //Method 1
void operator<<(ostream& ostr); //Method 2
};
関数の実装
//Method 1
ostream& operator<<(ostream &ostr, Add const& rhs)
{
ostr<<rhs.x;
return ostr;
}
//Method 2
void Add::operator<<(ostream& ostr)
{
cout<<" using operator<< \n";
ostr<<x;
}
main関数からの呼び出し
cout<<Obj_Add; //calls the Method 1
Obj_Add<<cout; //calls the Method 2
ここで私の質問は、friend関数を使用せずにメソッド1タイプの呼び出しを実現したいということです。しかし、わからない、それはcppで可能かどうか。いくつかの実装を試しましたが、すべてコンパイルエラーが発生します。私がここで見逃している点を理解するのを手伝ってください。