Mal etwas Grundsätzliches:
if(filePath[0] != (char)47)
{
cerr << "Falsche Eingabe!" << endl;
restart = true;
}
else(filePath[0] == (char)47);
{
restart = false;
}[/code]
Dieser Code tut nicht, was du erwartest.
Ich rücke das mal richtig ein und entferne überflüssige Klammern:
[code]if(filePath[0] != (char)47)
{
cerr << "Falsche Eingabe!" << endl;
restart = true;
}
else
filePath[0] == (char)47;
restart = false;
Man gibt bei else keine weitere Bedingung an. Das wäre auch Unsinn, der else-Zweig wird automatisch ausgeführt, wenn die Bedingung am if-Zweig false war.
Dein else-Zweig ist der Vergleich, der natürlich sonst keinen weiteren Effekt hat. Die Zuweisung dahinter wird also auf jeden Fall ausgeführt.
Zudem solltest du alle deine Variablen so lokal wie möglich deklarieren und auch auf jeden Fall initialisieren.
Kann gut sein, dass dein Programm schon richtig läuft, wenn du diese zwei Punkte umsetzt.
Und noch eins:
while(restart == true);
restart selbst ist bereits ein bool-Ausdruck, der Vergleich mit true ist überflüssig. Ist eine Geschmacksfrage, aber wenn ich so etwas sehe, frage ich mich, warum nicht gleich:
while(restart == true == true == true);