У меня есть следующие функции:Как вставить тип переменной в качестве функции параметра?
int readAndCheck() {
int n;
while (n < 2) {
try {
cout << "Please insert an integer bigger than one: ";
string check = "";
cin >> check;
n = boost::lexical_cast<int>(check);
} catch (boost::bad_lexical_cast&) {
cout << "Error!\n";
}
}
return n;
}
Я хочу обобщить функцию так, чтобы она может выводить любой запрос пользователя и проверить для любого типа. Но я знаю следующее не представляется возможным:
checktype readAndCheck (string request, checktype) {
checktype n;
while (n < 2) {
try {
cout << request;
string check = "";
cin >> check;
n = boost::lexical_cast<checktype>(check);
} catch (boost::bad_lexical_cast&) {
cout << "Error!\n";
}
}
return n;
}
Как я могу создать переменную, которая содержит тип как CheckType (это возможно)?
Какой способ создать обобщенную функцию readAndCheck для любого возможного значения checktype?
Я прошу об этом, потому что кажется, что вам нужно создать функцию для каждого контрольного типа.
РЕШЕНИЕ:
#include <iostream>
#include <boost/lexical_cast.hpp>
template<typename CheckType>
CheckType readAndCheck(std::string request, CheckType n)
{
try {
std::cout << request;
std::string check = "";
std::cin >> check;
n = boost::lexical_cast<CheckType>(check);
} catch (boost::bad_lexical_cast&) {
std::cout << "Error!\n";
}
return n;
}
int main()
{
int a = 0;
while (a < 2)
a = readAndCheck("Please insert a integer bigger than one: ", a);
std::cout << a << "\n";
return 0;
}
Это помеченный C++, и все же вы, похоже, не знаете, что существуют шаблоны. Что с этим? –
Я начал изучать C++, как неделю назад. Я просто посмотрел, какие шаблоны. Интересно, но не могли бы вы немного разобраться? – Pigna