uncleared identifier
-
wenn ich mit ner switch-anweisung zwischen mehreren Möglichkeiten, eine Klasse zu erstellen unterscheide, kommt die Meldung, wenn ich die Klasse benutzen will. Was kann ich tun ??
-
Hallo,
ein kleines Beispiel, das die Situation demonstriert wäre nett. Zumindest meine Kristallkugel ist derzeit kaputt.[ Dieser Beitrag wurde am 22.03.2003 um 18:14 Uhr von HumeSikkins editiert. ]
-
#include <iostream> using namespace std; class irgendwas { public: irgendwas(int l) { i=l; } ~irgendwas() {} private: int i; } int main() { int j; cin>>j; switch (j) { case 1: irgendwas DAS(5); break; default: irgendwas DAS(10); break; } irgendneFunktion(DAS); return 0; }
Bitte Code-Tags verwenden!
[ Dieser Beitrag wurde am 22.03.2003 um 18:35 Uhr von HumeSikkins editiert. ]
-
Jetzt noch die genau Fehlermeldung mit Copy&Paste bitte posten.
-
Hallo,
oha. Da ist ne ganze Menge falsch in dem Code.
1. Klassendefinitionen *müssen* mit einem Semikolon abgeschlossen werden.
2. In dem Code der einem case-Label folgt dürfen keine Objekte definiert werden,
es sei denn dieser ist in einen eigenen Block eingeschlossen:switch (j) { case 1: { irgendwas DAS(5); break; } default: { irgendwas DAS(10); break; } }
3. Funktionen müssen deklariert sein, bevor sie aufgerufen werden können.
4. Ein switch-Statement besitzt einen eigenen Scope. Objekte die innerhalb dieses Scopes definiert werden, sind außerhalb des switch-Statements nicht sichtbar.Ergibt:
#include <iostream> using namespace std; class irgendwas { public: irgendwas(int l) { i=l; } ~irgendwas() {} private: int i; }; void irgendneFunktion(irgendwas); int main() { int j; cin>>j; irgendwas DAS(j == 1 ? 5 : 10); irgendneFunktion(DAS); return 0; }
Wenn du unbedingt switch benutzen willst, muss du leider auf Pointer umsteigen.
-
den code hab ich hingekritzelt, geb ich zu.
-
[ Dieser Beitrag wurde am 22.03.2003 um 19:04 Uhr von Lars editiert. ]