Czy da się zrobić tak, aby funkcja była argumentem innej funkcji? Coś w ten sposób:
void menu(std::string alert)
{
std::cout<<alert<<std::endl;
//Chcialbym zwalidowac konwersje string -> int
//Docelowo po prostu walidacja danych wejsciowych i obsluga bledu - moze jakis inny, prostszy pomysl?
getline(std::cin, pytanie);
int opcja = stold(pytanie);
switch (opcja)
{
case 1:
funkcja1();
break;
case 2:
funkcja2();
break;
case 3:
funkcja3();
break;
default:
throw std::logic_error("Brak opcji");
break;
}
}
//Sprawdzanie bledow
void sprawdz(mojaFunkcja(std::string mojString))
{
try
{
mojaFunkcja("");
}
catch (std::invalid_argument){
mojaFunkcja("Zly argument");
}
catch (std::logic_error e){
mojaFunkcja(std::string(e.what()));
}
catch (std::exception e) {
mojaFunkcja("Blad: " + static_cast<std::string>( e.what() ));
}
catch (...) {
mojaFunkcja("Nieznany blad");
}
}
int main(void)
{
sprawdz(menu(""));
}