2012-06-26 95 views
1

我有一个C类模板++项目:C++类模板的属性类型

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

我再有,我想拥抱的Server<WhateverRequestHandlerIWant>实例作为属性的类。所以目前我有类似:

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

除非我弄错了,这样只会让我来存储Server类中的模板参数是类DefaultRequestHandler,是否正确?

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

+3

我从你的问题设定,你不要”你想使用继承?否则,我会使用基类BaseServer,并从中继承Server,并从OtherClass指向BaseServer。 –

+0

@AlexWilson你应该发布这个答案,这正是他应该怎么做的。 –

+0

@LuchianGrigore挨打吧! –

回答

4

你可以添加一个共同的抽象类为所有服务器类类:

class IServer { ... }; 

然后

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

class OtherClass { 
public: IServer* server; 
};