C++ Source Code zusammengefügt:
class Menu
{
private:
public:
char input = '0';
std::string options[4] = { "\n\nMAIN MENU\n\n", "Option 1\n", "Option2\n", "End\n\n" };
// Options { TITLE, OPTION1, OPTION2, ..., END
void printMenu();
void Setup();
void ChangeOptions(std::string title, std::string option1, std::string option2);
char getUserInput();
void Engine(void(*f1), void(*f2)); // <-- HIER
void Error(std::string error);
};
// Die Funktion Engine:
void Menu::Engine(void (*f1), void (*f2))
{
Game game;
while (true)
{
system("cls");
printMenu();
input = getUserInput();
if (input == '1')
{
(&f1);
}
else if (input == '2')
{
(&f2);
}
else if (input == '3')
{
break;
}
else
{
Error("Invalid Input");
}
}
}
// Die Funktion, die die Engine aufruft (In der Klasse Game):
void Game::chooseCar()
{
menu.ChangeOptions("\n\nVehicle Picker\n\n", "Next Car\n", "Last Car\n");
menu.Engine(NextCar(), LastCar()); // <-- PROBLEM HIER
}
/* Beide Funktionen die ich übergeben möchte werden Rot unterstrichen.
Außerdem steht dort:
"Das Argument von Typ ""void(Game::*)()"" ist mit dem Parameter vom Typ ""void*"" inkompatibel."
*/
Wie kann ich die Funktion aus der Klasse Game, in die Funktion Engine des Objekts menu übergeben?