8
我想爲我的項目中的數據處理類創建模板接口。將方法的簽名作爲模板參數傳遞給類
我可以寫這樣的事:
template <class T>
class DataHandler
{
public:
void Process(const& T) = 0;
};
然後,假設,我定義一個類是這樣的:
class MyClass: public DataHandler<int>
{
void Process(const int&) { /* Bla-bla */ }
}
現在想來,這個問題,我可以以某種方式定義我的模板界面作爲參數的方式不僅僅是輸入T,而是Process()函數的整個簽名。
我想工作的事情是這樣的:
class MyClass: public DataHandler<void (int&)>
{
void Process(const int&) { /* Bla-bla */ }
}
這可能嗎?我知道,舉例來說,boost :: signal以這種方式接收模板參數,但是,如果我理解正確,他們會在那裏使用大量的黑魔法。
現在問題依然存在:需要多少年,直到我們可以在工作中使用可變模板日常使用。知道它有多簡單可能會傷害... – 2010-03-01 13:37:58
我應該如何改變它以支持DataProducer接口中的Process()函數中的多個參數?我想要支持像DataHandler –
Lev
2010-03-02 08:50:50
@Lev之類的東西,我懷疑你將不得不在函數類型上部分專門化'DataHandler',所以你得到了'Process'函數聲明也是。 'boost :: function'使用預處理器來生成所需的代碼,但是對於自己的項目和一些用途,在將自己介紹到可能不再需要的主題方面很沒用。因此,只需複製/粘貼4次,然後完成:) – 2010-03-02 12:25:27