あるクラスに高度な機能を持たせることによって、そのクラスの呼出元が生成した別の
インスタンスと処理内容が重なる場合のコーディングについてアドバイスなど頂けない
でしょうか。あまりC++は得意ではないのと、長文にご容赦を。

HTTPのサーバを想定してみてください。
まずクライアントから送られてくる要求は、read()?などでバッファに受け、その後
バッファ中のデータがどんなヘッダなのか解析しますね。

ヘッダ解析は逐次トークンを取得する処理を呼び出して解析に掛けるものとします。
ここでHTTPを処理するクラスをCHttp、ネット関連のI/O全体を統括するクラスをCNetIO、
トークンを処理するクラスをCTokenとでもしましょう。

仮にURLが冗長だったりして、トークン処理クラスが参照しているバッファ中のアドレス
が、バッファの領域からはみ出そうとしたとします。
このとき、トークン処理クラスは即時にエラーを返さず、read()関数など呼び出して後
のデータが来ていないかどうかタイムアウトするまで待つものとします。つまり、CToken
をエラーが起きるかあるいはCRが2つ来るまで、細切れになってやってくるパケット
を自動的に継ぎ足す処理をして適切にトークンを返すような便利なクラスにしたいのです。

で、この高機能?なCTokenですが、IO機能がダブっているようであまり美しくない?気も
します。CTokenを設計するにあたり、次の2案のどちらが妥当なのでしょうか。

案1:
CHttpで生成されたCNetIOのインスタンスへのポインタをCTokenのインスタンス生成時に
引き渡してやればCTokenはCNetIOの機能を呼び出せるから、そうせよ。

案2:
プログラム的に同じ機能のルーチン(CNetIO)を別々のクラスで各々生成するのは美しくない。
CTokenはバッファの最後に到達したら適切にエラーを返し、それ以上の処理はやめるような
簡単な機能にとどめるべきだ。継ぎ足し処理はCHttp内で行え。