假设我有一个简单的服务器,其模板接受客户端作为模板参数:
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>
。在构建User
时,类Server<Client>
显然需要将Client
作为参数传递。但是,根据目前的实施情况,这似乎是不可能的。
我该如何解决这个问题?
答案 0 :(得分:4)
这个怎么样?
template<class T>
class Server<T>{
Server(int port);
};
template<class Derived>
class Client {
Client(Server<Derived> *server, int socket);
virtual ~Client() {} // Base classes should have this
};
class User : public Client<User> {
};