我想以某種方式定義一個基本模板類,以便它採用可變參數模板參數併爲每個參數定義一個虛擬方法,其中參數是參數類型。使用可變參數模板的參數定義多個方法
E.g. Base<int, bool, string>
應該給我3個虛擬方法:Foo(int)
,Foo(bool)
和Foo(string)
。
我試過如下:
template <typename Param>
struct BaseSingle
{
virtual void Foo(Param) {};
};
template <typename... Params>
struct Base : public BaseSingle<Params>...
{
};
不幸的是,富變得模糊。我無法獲得語法的工作。有沒有辦法?
我知道,或者,我可以從BaseSingle遞歸繼承並傳遞其餘的參數。這是否有性能影響?
遞歸繼承是正常的,例如, 'std :: tuple'就是這樣實現的。我不明白你爲什麼會遇到性能問題,你的函數甚至不會相互覆蓋,也不會在運行時調用overriden成員來傳遞參數。 – doublep 2012-03-09 20:40:19
[在variadic模板中使用聲明]的可能的重複(http://stackoverflow.com/questions/7870498/using-declaration-in-variadic-template) – 2012-03-09 20:46:39
* std :: tuple的一些*實現使用遞歸繼承。但好的不是。 ;-) – 2012-03-09 21:51:31