2012-06-26 128 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; 
};