模板參數的數目我有這樣定義的方法和兩類:減少爲
template<template<class X> class T>
void doSomething()
{
T<int> x;
}
template <class T>
class ClassWithOneArg
{
T t;
};
template <class T1, class T2>
class ClassWithTwoArgs
{
T1 t1;
T2 t2;
};
我現在可以
doSomething<ClassWithOneArg>();
,但我不能
doSomething<ClassWithTwoArgs>();
然而,我想通過ClassWithTwoArgs做一些事情,其中T2 = double。
我發現的唯一的方法是創建
template <class T1>
class ClassWithTwoArgs_Child
: public ClassWithTwoArgs<T1, double>
{
};
然後
doSomething<ClassWithTwoArgs_Child>();
這工作,但在我的具體情況下,所有類需要一個構造函數的參數,因此我要創建一個構造函數在_Child-class中也有這個參數,並將其傳遞給我真正想避免的基礎。
你有一個想法該怎麼做?
非常感謝!
請注意來自菲利普的評論(恐怕這不是我正在尋找的,因爲可能有其他情況下,我也想通過「ClassWithTwoArgs」。)。這個解決方案不會工作,因爲'double'是硬編碼 –
Chubsdad
2010-10-07 13:58:11
@chubsdad,當然,您可以參數化元函數。看看我如何將mf2轉換成模板本身以及如何使用它。 – sellibitze 2010-10-07 14:17:56
謝謝,這解決了我的問題!改變「doSomething」不是問題,但我不想在「doSomething」之外定義Template-Argument(在我的例子中爲「int」)。 – Philipp 2010-10-08 11:13:53