我在c ++项目中有一个类模板:
template<class RequestHandler = DefaultRequestHandler>
class Server { ... }
然后我有另一个类,我希望将Server<WhateverRequestHandlerIWant>
的实例作为属性。所以目前我有类似的东西:
class OtherClass {
public: Server<>* server;
};
除非我弄错了,否则这只允许我存储模板参数为类Server
的{{1}}个类,对吗?
有没有办法写这个,而不仅仅是DefaultRequestHandler
一个类模板?
答案 0 :(得分:4)
您可以为所有类似服务器的类添加一个公共抽象类:
class IServer { ... };
然后
template<class RequestHandler = DefaultRequestHandler>
class Server : virtual public IServer { ... }
和
class OtherClass {
public: IServer* server;
};