Мне нужно найти способ перекомпоновки перегрузки возвращаемого типа функции в C++.C++ те же функциональные параметры с разными типами возврата
Я знаю, что нет прямого способа сделать это напрямую, но я надеюсь, что вокруг него будет какой-то из коробки. Мы создаем API для пользователей, работающих под ними, и они будут передавать строку данных, которая извлекает значение на основе строковой информации. Эти значения являются разными типами. В сущности, мы хотели бы сделать это:
int = RetrieveValue(dataString1);
double = RetrieveValue(dataString2);
// Obviously, since they don't know the type, they wouldn't use int =.... It would be:
AnotherFunction(RetrieveValue(dataString1)); // param of type int
AnotherFunction(RetrieveValue(dataString2)); // param of type double
Но это не работает на C++ (очевидно). Прямо сейчас, мы с его настроить так, что они называют:
int = RetrieveValueInt(dataString1);
double = RetrieveValueDouble(dataString2);
Однако мы не хотим, чтобы они должны знать, что тип их строки данных.
К сожалению, нам не разрешено использовать внешние библиотеки, поэтому без использования Boost.
Есть ли способы обойти это?
Просто, чтобы уточнить, я понимаю, что C++ не может изначально сделать это. Но должен быть какой-то способ обойти это. Например, я думал о выполнении RetrieveValue (dataString1, GetType (dataString1)). Это ничего не исправляет, потому что GetType также может иметь только один тип возврата. Но мне нужно что-то подобное.
Я понимаю, что этот вопрос задавали раньше, но в другом смысле. Я не могу использовать какие-либо очевидные ответы. Мне нужно что-то совершенно готовое, чтобы оно мне было полезно, чего не было в ответах в другом вопросе.
Как узнать, для какого типа назначить результат функции? –
Возможный дубликат [Головоломка: перегрузка функции C++ в соответствии с возвращаемым значением] (http://stackoverflow.com/questions/226144/puzzle-overload-ac-function-according-to-the-return-value) –
Будет ли вы показываете, как вы хотите, чтобы эта функция вызывалась? И int x = RetrieveValue (...) Не потому, что они должны указать int для x, который разбивает одно из ваших условий. Я думаю, что этот вопрос плохо продуман. –