C ++类模板作为属性类型

时间:2012-06-26 13:51:05

标签: c++ templates generics

我在c ++项目中有一个类模板:

template<class RequestHandler = DefaultRequestHandler>
class Server { ... }

然后我有另一个类,我希望将Server<WhateverRequestHandlerIWant>的实例作为属性。所以目前我有类似的东西:

class OtherClass {
public: Server<>* server;
};

除非我弄错了,否则这只允许我存储模板参数为类Server的{​​{1}}个类,对吗?

有没有办法写这个,而不仅仅是DefaultRequestHandler一个类模板?

1 个答案:

答案 0 :(得分:4)

您可以为所有类似服务器的类添加一个公共抽象类:

class IServer { ... };

然后

template<class RequestHandler = DefaultRequestHandler>
class Server : virtual public IServer { ... }

class OtherClass {
public: IServer* server;
};