我對C++模板元編程相當陌生,並試圖完成以下工作。讓我們說我有一個自定義的模板類這樣如何從其他類型獲取類型(C++模板元編程)
template<typename Parameter>
class MYCLASS {
public:
Parameter parameter;
//Do something with it
};
現在,爲了讓用戶實例化類,他/她需要做
#include "other.h" //A header from other libraries
MYCLASS<other::someclass> myclass; //Suppose there is a class called other::someclass in the "other.h"
我想做足了用戶的問題尋找標題,我想嘗試使用元編程,像這樣的東西
template<typename Type>
struct get_right_type_impl{
//Do something here
};
template<typename Type>
using get_right_type_ = get_right_type_impl<Type>::type;
其中get_right_type_應返回另一種類型。例如,它應該採取雙重參數和返回等:: SomeClass的,因此類的定義應該看起來像
template<typename Type>
class MYCLASS {
public:
get_right_type_<Type> parameter;
//when Type==double, get_right_type_<Type> should be equivalent to other::someclass
};
//Now one can use instantiation like this
MYCLASS<double> class;
我已經試過的東西,大部分是跟隨this。雖然我認爲我得到了一些文章,但我沒有編寫出通常使用typename時出現編譯問題的示例。在閱讀本論壇的一些答案之後,我感到更加困惑,並且我們不確定這是否甚至可能出現在我們的案例中,因爲我還沒有從Google搜索中找到確切的解決方案。
歡迎任何建議。
您的問題只是'typename'編譯器錯誤? '使用get_right_type = get _... :: type;'應該'使用get_right_type = typename get _... :: type;'。 –
TartanLlama
還有其他編譯錯誤。我會稍微編輯一下。謝謝你的幫助〜 –
是的。這是非常愚蠢的問題。這是typename問題.......感謝您的幫助 –