C++で書いてます。クライアントクラスの管理をしたいのですが、
管理されるクライアントクラスはnewで動的に生成されるという物です。
また、マルチスレッド環境での使用も考えています。
class client{
client_management *cmgmt_;
public:
 client( client_management *cmgmt ):cmgmt_( cmgmt ){
  cmgmt_->add( this ); // 排他処理はcmgmt内で
 }
void haandle(){
  //クライアントとの通信とか、いくつかの処理
  //処理終了で、クライアントと切断後、
  cmgmt_->remove( this );
  delete this;
 }
};
これをserver側で
class server{
 client_management cmgmt_;
 void listen(){
  socket sock = accept();//clientクラスのオブジェクトを返す
  new client( &cmgmt_ );
 }
};
こんな設計しか思い浮かばなかったのですが、特に
new client( &cmgmt_ )の部分とかdelete thisな部分が嫌な感じがします。
よりベストな設計を伺いたいです。よろしくお願いします。