У меня есть две системы, которые мне нужны для сопоставления типов: поля исходных данных, которые могут быть числовыми, символами или строками, хранятся как строковые объекты;системе назначения требуется другой тип данных для базового типа каждого поля данных, и мне нужно динамически выполнить это отображение.
Таким образом, в основном для каждого поля данных у меня есть фактическая строка поля 's' итип базовых данных, «тип», и я пытаюсь преобразовать в тип «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>()
Кто-нибудь может порекомендовать более умный способ сделать это?В идеале я пытаюсь вернуть соответствующий тип возвращаемого значения с помощью только строки, представляющей тип для сопоставления с ним.Заранее спасибо.