我有兩個系統,我需要映射之間的類型 - 源數據字段,可以是數字,字符或字符串,都存儲爲字符串對象;目標系統需要爲每個數據字段的基礎類型使用不同的數據類型,並且我需要動態執行此映射。因此,基本上,對於每個數據字段,我都有實際的字段's'和底層數據類型'type',並且我試圖根據'type'轉換爲類型'dest' 。我一直試圖使用模板和模板常量來破解可以做到這一點的東西,但沒有運氣。基於不同的模板參數轉換爲不同的數據類型
目前的嘗試我有如下,但這並不因爲編譯爲衝突的返回類型:
template<class CLASSTYPE, int CLASSID>
CLASSTYPE returnDifferentTypes()
{
using namespace std;
if (CLASSID == 1) // 1 = "string"
return std::string("returned string");
if (CLASSID == 2) // 2 = int
return 123;
if (CLASSID == 3) // 3 = double
return 123.123;
}
所以我一直呼籲像
string mapped = returnDifferentTypes<string, 1>()
or
int mapped = returnDifferentTypes<int, 2>()
誰能推薦一個更聰明的清潔方式來做到這一點?理想情況下,我試圖返回適當的返回類型,只需要一個代表類型的字符串來映射它。提前致謝。
+1哇,很多很好的選擇,我沒有想到。我認爲最後一個是最好的。 –
+1這很好,我最終使用了整數特化方法,因爲我想關閉傳遞給函數的參數來確定返回類型。 – user944775