2
のは、私はそれがテンプレート引数だとしてクライアントを受け入れるテンプレートを持つ単純なサーバーがあるとしましょう:このようなC++のテンプレートと継承
template<class T>
class Server<T>{
Server(int port);
}
とクライアントが定義されているもの:
class Client{
Client(Server<Client> *server, // <--
int socket);
};
しかし、私はまた、クラスUser
をClient
(class User : public Client
)から継承させるようにしたいので、Server<Client>
の代わりにServer<User>
を行うことができました。クラスUser
は、Client
を構築するときに明らかにパラメータとしてServer<Client>
を渡す必要があります。しかし、現在の実装ではこれは不可能と思われます。
どのようにこの問題にアプローチする必要がありますか?
既存のコードをリファクタリングする必要がありましたが、これは本質的に私が望むものでした。まことにありがとうございます! – Chaosteil
実際、デストラクタはおそらく保護されていて仮想ではない方が良いでしょう。この設計はほとんどの場合、人々が 'Client *'を使ってUserのインスタンスを削除することを望んでいません。 –
@onebyone:どうしてですか? – mmmmmmmm