Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieder ein fehler..
gonzo1247
12.04.2009, 00:58
So hab mal aus Spaß so ne art Test Menü erstellt.
Nun gibt es fehlermeldungen weil etwas angeblich fehlt, was vorhanden ist.
Das Rote ist die stelle wo angeblich ein ")" fehlen soll
Der Code sieht so aus:
Fehler 45 error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' c:\users\hasi\documents\visual studio 2008\projects\testmenü\testmenü\test menü.cpp 91
#include <iostream>
int choice;
int choice 2;
int choice 3;
int choice 4;
int choice 5;
bool fQuit = false;
int main ()
{
while (1)
{
std::cout << "Hallo, Was willst du machen?\n";
std::cout << "(1) Start (2) Menue (3) Speichern (4) Laden (0) Beenden" << std::endl;
std::cin >> choice;
switch (choice)
{
case 1: std::cout << "Was soll gestartet werden?\n";
std::cout << "(1) Spiel Starten (2) Test (3) Zurueck\n";
std::cin >> choice 2;
break;
case 2: std::cout << "Das Menue, welche auswahl?\n";
std::cout << "(1) Einstellungen (2) Grafik (3) Sound (4) Zurueck\n";
std::cin >> choice3;
break;
case 3: std::cout << "Speichermenue.\n";
std::cout << "(1) Spiel Speichern (2) Zurueck.\";
std::cin >> choice 4;
break;
case 4: std::cout << "Lade Menue.\n";
std::cout << "(1) Spiel Laden (2) Zurueck.\n";
std::cin >> choice 5;
break;
default : fQuit = true;
break;
}
if (fQuit)
break;
}
swicht (choice 2)
{
case 1: std::cout << "Spiel Wird gestartet.\n";
break;
case 2 : std::cout << " Test\n";
break;
case 3: std::cout << "Zurueck...\n";
switch (choice)
break;
}
switch (choice 3)
{
case 1: std::cout << "Hier werden die Einstellungen stehen...\n";
break;
case 2: std::cout << "Hier Werden die Einstellungen stehen...\n";
break;
case 3: std::cout << "Hier werden die Einstellungen stehen...\n";
break;
case 4: std::cout << "Zurueck...\n";
switch (choice)
break;
}
switch (choice 4)
{
case 1: std::cout << "Spiel Speichern.\n";
break;
case 2: std::cout << "Zurueck...\n";
switch (choice)
break;
}
switch (choice 5)
{
case 1: std::cout << "spiel Laden...\n";
break;
case 2: std::cout << "Zurueck...\n";
switch (choice)
break;
}
return 0;
}
Was hab ich falsch gemacht??
Sevi
Oparilames
12.04.2009, 01:41
Hallo.
Ich weiß zwar nicht, wo du C++ lernst, aber du scheinst da irgendwas absolut noch nicht verstanden zu haben (oder mir fehlt Grundwissen).
Alles zu erklären ist mir nicht möglich, ich musste deinen Code "komplett" umschreiben.
Keine Sorge, ich habe nichts eingebaut, was dein derzeitiges Wissen übersteigt, da bin ich mir sicher.
Hier, dieser Code funktioniert zu 100%. Ich habe es selbst ausprobiert.
#include <iostream>
using namespace std;
int choice;
int choice2; //Für weitere Menüpunkte
bool fQuit = false;
void ErsteAuswahl(); //Vordefinieren
void ZweiteAuswahl(); //Vordefinieren
void DritteAuswahl(); //Vordefinieren
void VierteAuswahl(); //Vordefinieren
void zurueck_mainmenue()
{
std::cout << "Hallo, Was willst du machen?\n";
std::cout << "(1) Start (2) Menue (3) Speichern (4) Laden (0) Beenden" << std::endl;
std::cin >> choice;
switch (choice)
{
case 1:
{
ErsteAuswahl();
} break;
case 2:
{
ZweiteAuswahl();
} break;
case 3:
{
DritteAuswahl();
} break;
case 4:
{
VierteAuswahl();
} break;
default:
{
fQuit = true;
};
};
};
void ErsteAuswahl()
{
std::cout << "Was soll gestartet werden?\n";
std::cout << "(1) Spiel Starten (2) Test (3) Zurueck\n";
std::cin >> choice;
switch (choice)
{
case 1:
{
std::cout << "Spiel Wird gestartet.\n";
} break;
case 2:
{
std::cout << "Test\n";
} break;
case 3:
{
std::cout << "Zurueck...\n";
} break;
};
};
void ZweiteAuswahl()
{
std::cout << "Das Menue, welche auswahl?\n";
std::cout << "(1) Einstellungen (2) Grafik (3) Sound (4) Zurueck\n";
std::cin >> choice;
switch (choice)
{
case 1:
{
std::cout << "Hier werden die Einstellungen stehen...\n";
} break;
case 2:
{
std::cout << "Hier werden die Grafik-Einstellungen stehen...\n";
} break;
case 3:
{
std::cout << "Hier werden die Sound-Einstellungen stehen...\n";
} break;
default:
{
system ("cls"); //Löscht alles, was noch auf dem Bildschirm steht...
zurueck_mainmenue();
};
};
};
void DritteAuswahl()
{
std::cout << "Speichermenue.\n";
std::cout << "(1) Spiel Speichern (2) Zurueck.";
std::cin >> choice;
switch (choice)
{
case 1:
{
std::cout << "Lade Menue.\n";
std::cout << "(1) Spiel Laden (2) Zurueck.\n";
std::cin >> choice2;
if (choice2==1)
{
std::cout << "Bla bla bla hier muss man einen Speicherstand auswaehlen!\n";
}
else if (choice2==2)
{
zurueck_mainmenue();
}
else
{
std::cin.clear();
std::cin.ignore(1, '\n'); //Entweder bis zum 1ten Zeichen ODER bis zum Zeichen "\n"
std::cout << "Fehler, Eingabe wiederholen!" << endl; //EndOfLine (ist gleichbedeutend mit "\")!
std::cin >> choice2;
};
} break;
case 2:
{
std::cout << "Test\n";
} break;
case 3:
{
std::cout << "Zurueck...\n";
} break;
};
};
void VierteAuswahl()
{
std::cout << "Lade Menue.\n";
std::cout << "(1) Spiel Laden (2) Zurueck.\n";
std::cin >> choice;
switch (choice)
{
case 1:
{
std::cout << "Spiel Wird gestartet.\n";
} break;
case 2:
{
std::cout << "Test\n";
} break;
case 3:
{
std::cout << "Zurueck...\n";
} break;
};
};
int main ()
{
zurueck_mainmenue();
return 0;
};
Schönheitsfehler im "Aufbau" sind natürlich nicht ausgeschlossen, aber so würde ich den Code aufbauen, wenn jemand Dinge findet, die unnötig sind o.Ä. (Besonders was den Unterschied zwischen choice und choice2 angeht, bin ich unsicher), soll er dies bitte mitteilen.
gonzo1247
12.04.2009, 08:13
Achso. So würds aussehen.
Also bin ja noch am lernen, und über einfache Menüs(eine auswahl) bin ich noch nicht drüber, dachte versuchst mal einfach eins mit untermenü und so. Kurz gesagt, ich hab versucht ein verschateltes menü aufzubaun ohne zu wissen wie man sowas wirklich macht. Sollte sich nicht einfach an was setzen ohne es zu gelernt zu haben^^
Aber danke das du das mal umgeschrieben hast.
Sevi
gonzo1247
12.04.2009, 10:13
Achso hab da eine frage. Es betrift dabei Microsoft Visual C++ 2008 Express Edition.
Normalerweiße schreibe ich die Programme in Code:: Blocks. Aber ab und zu schreib ich auch was in Visual C++.
Mein Problem ist, ich kann "}" nicht machen. Aber die geöffnete ("{") kann ich machen.
Weiß jemand woran das liegt??
Sevi
Oparilames
12.04.2009, 10:46
Ich verstehe dein Problem nicht ganz.
Du benutzt dorch eine Tastatur, da müssten generell alle Tasten einmal drauf sein...
Ansonsten musst du halt eine "}" kopieren über über Einfpgen od. STRG+V einschreiben...
Lord Hagen®
12.04.2009, 11:31
Mein Problem ist, ich kann "}" nicht machen.
Benutz Alt Gr.
2 allgemeine Tipps von mir:
Keine Leerzeichen und Umlaute in Dateinamen. Kann unschön werden, falls man Pech hat.
Bei einem Ding bleiben, ich bezweifle, dass die Dualität der Verwendung von VC++ und C++ so hilfreich ist, weil man dann am Ende beides nicht richtig kann.
gonzo1247
12.04.2009, 17:52
Ich versuche die Klammer durch drücken von Strg + Alt und dann 0. Geht da aber nicht.
Benutze ja die Tastatur, sonst geht sie überall, nur dort nicht. Habs bisher immer mit Strg v dann gemacht.
Achso ist das Visual C++ was anderes als C++? Dachte ist nur ein "Name" den Microsoft für ihr Produkt ausgedacht haben. Wenn das so ist, dann lass ich das erst mal.
Umlaute versuche ich zu verzichten. Da die eh im Dos fenster nur als rechteckigen kasten dargestellt werden.
Sevi
Oparilames
12.04.2009, 18:00
Alternativ kannst du die Datei auch einfach mit einem Textprogramm schreiben und mit einem compiler kompilieren.
Dann müsstest du auch } und { setzen können.
gonzo1247
12.04.2009, 21:06
Stimmt kann ich auch. Wär nicht anderst als in Code:: Blocks oder so. Und die einrücke muss man ja sowieso selber machen.
Denke werd aber Visual C++ erst mal sein lassen wenn es was anderes als c++ ist.
Sevi
Gebe mal in Wikipedia Visual C++ ein. ;)
gonzo1247
12.04.2009, 21:17
Also doch wie ich dachte, Visual C++ ist nur ne Entwicklungsumgenung von Microsoft.
Hab das weiter oben so vestanden das es schon C++ ist, nur bisschen anderst.
Sevi
Nein, ist es die Entwicklungsumgebung für die Sprache C++/CLI.
Aber das steht doch in Wikipedia.
Brechstange
12.04.2009, 23:22
Nein, ist es die Entwicklungsumgebung für die Sprache C++/CLI.
Aber das steht doch in Wikipedia.
Für C++/CLI und für normales C++.
Nur weil man diese .NET-Perversion nutzen kann, muss man das noch lange nicht, mit Visual Studio kann auch ISO-C++ kompatibler Code geschrieben und kompiliert werden.
Zudem haben MFC und die WinApi auch nicht viel mit .NET am Hut und trotzdem kann das Zeug von Visual Studio verwendet werden.
Aber an sich hast du schon recht, wirklich Spaß macht ISO-C++ mit Visual Studio nicht, jedenfalls ist Windows-Programmierung damit wesentlich angenehmer als standardkonformes Zeugs. Man wird eben doch andauernd dezent zu Windowszeugs verleitet.
Er kann nichtmal richtiges ISO99:
Now, the Visual C++ compiler team receives the occasionally question as to why we haven’t implemented C99. It’s really based on interest from our users. Where we’ve received many requests for certain C99 features, we’ve tried to implement them (or analogues). A couple examples are variadic macros, long long, __pragma, __FUNCTION__, and __restrict. If there are other C99 features that you’d find useful in your work, let us know! We don’t hear much from our C users, so speak up and make yourselves heard J
http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx
Brechstange
12.04.2009, 23:52
Stimmt, richtiges C99 kann er nicht, da fehlt so einiges.
Aber der C-Standard ist ja was anderes als der C++-Standard, und letzterer setzt in seiner aktuellen Form bisher nur eine integration des C89-Standards vorraus, C99 wird erst im kommenden C++-0x-Standard offiziel unterstützt.
Den C++-Standard implementiert Visual C++ daher, den aktuellen C-Standard allerdings nicht.
Na ja, wobei, wirklich aktuell ist ja bei C++ der TR1 von 2003, den unterstützt Visual C++ afaik eher schlecht als recht ...
gonzo1247
13.04.2009, 01:17
Nein, ist es die Entwicklungsumgebung für die Sprache C++/CLI.
Aber das steht doch in Wikipedia.
Ja das meinte ich ja^^ Mit meinem Satz: " Visual C++ ist nur ne Entwicklungsumgenung von Microsoft." Meinte ich, das Microsoft halt diese Entwicklungsumgebung für C++/CLI erstellt/geschrieben hat.
Achso also ist es doch nicht so gut??
Wenn es den Iso standart nicht wirklich unterstützt, frag ich mich wieso das bei Vielen einsteiger Büchern dabei ist?
Sevi
gonzo1247
14.04.2009, 00:26
Hab ein Neus problem.
Die Meldung lautet:
|266|error: invalid use of non-static member function `virtual void Part::Display() const'|
Das die besagte Zeile
void ShowAll () { Iterate(Part::Display); }
Was ist daran falsch??
Wenn der Code auszug zu wenig wär, einfach sagen.
Sevi
Und Erfahrung mit C++ zu haben, würde ich sagen, du willst eine nicht statische Funktion aus einem statischen Kontext ausrufen.
Du hast also keine Instanz der Klasse erzeugt, dessen Funktion du dann aufrufst, sondern du rufst die Funktion direkt auf. Damit das geht, müsstest du die Funktion als statisch deklarieren.
Powered by vBulletin® Version 4.2.2 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.