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<User>
而不是Server<Client>
。當構造Client
時,類User
顯然需要通過Server<Client>
作爲參數。但是,在目前的實施中,這似乎是不可能的。
我該如何解決這個問題?
需要對現有代碼進行一些重構,但這實際上是我想要的。萬分感謝! – Chaosteil 2009-09-20 17:16:09
事實上,析構函數可能會更好地被保護和非虛擬。這種設計幾乎肯定不希望人們通過'Client *'刪除用戶的實例。 –
2009-09-20 17:23:37
@onebyone:爲什麼不呢? – mmmmmmmm 2009-09-20 18:33:47