2014-01-13 67 views
0

是否可以使用模板構造類型定義中的類型?例如。我想有這樣的事情:如何在模板類定義中構造自定義類型

class MyType 
{ 
    template<typename T> 
    someNamespace::T Convert(someOtherNamespace::T value); 
}; 

如果模板不能從事用於此目的,這樣的聲明甚至可能嗎?

問候,Dawid

+1

*爲什麼你要這樣做*? –

回答

1

不,它不是。模板參數名稱是實際類型,而不是標識符(如果您想在名稱空間中查找,您將需要這些標識符)。

此外,我不明白這是如何特別有用。它要求兩個名稱空間包含具有相同名稱的類型,並且可以以完全通用的方式進行轉換 - 您多久會看到一次?

你能更詳細地描述你想做什麼嗎?

+0

我必須在託管(C++/cli)和本機類型之間執行序列化。爲此,我有一個模板序列化程序類:\t'template ref class Serializer'。對於大多數類型來說,使用模板很容易,但是如果我只能定義標識符而不是整個類型,那麼它會容易得多,因爲在兩個名稱空間中,類型具有相同的名稱。 – dawid

+0

@dawid:你可以使用MACRO ...? – Jarod42

+0

@ Jarod42:模板之前沒有解析宏嗎?如果是這樣,我必須使用兩種類型(從宏獲得)實例化模板函數。我想用一種類型(標識符)模板化一個函數,並在函數中執行精確的類型構造(或者如果一個類是模板化的,則爲類)。 – dawid

0

不能確定你想要什麼,但也許以下(使用宏)可能會有幫助:

// Assuming value is of type someOtherNamespace::identifier 
#define CONVERT(identifier, value) static_cast<someNamespace::identifier>(value)