2011-02-28 70 views
0

我有一個類期待一個兩個參數模板,像這樣:C++問題「適應」三參數類模板成兩個參數類模板

template<template <class, class> class TwoParamsClass> 
class Test 
{}; 

我也有一類這樣的:

template<int a, class A, class B> 
class ThreeParamsClass 
{}; 

我需要一個適配器,設置「ThreeParamsClass」的第一個int參數,以便能夠在Test類中使用它們。


在這裏,我的部分解決方案(和它的問題)。

template<int a> 
struct Alias 
{ 
    template<class A, class B> 
    struct Type 
    { 
     typedef ThreeParmamsClass<a, A, B> Type2; 
    }; 
}; 

,然後,我打電話測試是這樣的:

Test<Alias<1>::Type> 

(當然,內部測試我需要帕拉姆並獲得::類型2型)

但問題是,在這之後,I'need包裝測試類,像這樣:

template<int n> 
struct Wrap 
{ 
    typedef Test<Alias<n>::Type> WrappedTest; 
}; 

但是,我得到這個錯誤:

error: type/value mismatch at argument 1 in template parameter list for 'template class T> class Test'

這是奇怪的,因爲這工作得很好:

template<int n> 
struct Wrap 
{ 
    typedef Test<Alias<1>::Type> WrappedTest; 
}; 

我希望要清楚,我認爲做這件事2層的問題,但我認爲是更好地問第二個進第一個環境。

感謝

回答

2

沒有真正理解你的推理,但試試這個:

template<int n> 
struct Wrap 
{ 
    typedef Test<Alias<n>::template Type> WrappedTest; 
}; 
+0

大埃迪,謝謝!你不明白?爲什麼我需要包裝它?或之前的事情? – Hugo 2011-02-28 01:28:35