オレオレクラスを ostream に出力する
C++ プログラミング入門 によると、print() というメンバ関数を作って、operator<< から呼び出すらしい。
class Foo { ... public: void print(ostream* out) const { *out << value; } ... }; ostream& operator<<(ostream& out, const Foo& foo);
なんで print なのか?
なんで ostream& じゃなくて ostream* なのか?
operator<< の実体は、print() を呼び出すだけの簡単なお仕事です。
ostream& operator<<(ostream& out, const Foo& foo) { foo.print(&out); return out; }
これで cout << foo << endl; とかできるようになる。