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