Problem bei einem Ampelprojekt
-
Hallöchen zusammen,
schreibe hier nciht oft, lese viel mehr, doch heute komm ich einfach nicht drum rum auch mal wieder um Hilfe zu betteln
Ich sag mal vorweg, das ich nicht der Programmier-Gott schlechthin bin, empfinde dieses Fach in meiner Ausbildung ehr als Nötigung
Doch ich will euch nicht länger mit dummen Gerede langweilen und komme daher mal zur Sache. Wie die Überschrift schon sagt habe ich die Aufgabe eine Ampel zu programmieren. Also die Ampel selbst und auch meine 3 Leuchten habe ich inzwischen auf in das Fenster programmiert bekommen. So einfach mal 4 Shapes reinhauen war meinem Lehrer zu einfach ... schade eigentlich. Naja, als ob es noch nicht genug wäre, gab er als Bedingung für die Phasenänderung eine Switch-Case Anweisung vor. Hier liegt nun mein Prob. Hab mit der SC grundsätzlich kein Prob, nur übergibt mein Aufruf im Hauptprogramm keine Daten an meine Klasse und die entsprechenden Funktion. Also ich hoffe mal wenn ich jetzt meinen Code poste wird irgendjemand den Fehler finden. Wird sicher was dummes sein.
Teil des Hauptprogrammes:
void __fastcall TForm1::Button2Click(TObject *Sender) { int p = 0; if (p<=4) { TLRed::WechselPhase(p); TLGelb::WechselPhase(p); TLGruen::WechselPhase(p); p++; } else p=0; }
Hier soll bei Knopfdruck immer eine Ampelphase weitergeschaltet werden.
So sieht die Funktion in der Classe aus (braucht ihr die ganze Classe um den Fehler zu sehen?)
void TLRed::WechselPhase(int p) { phase = p; switch(p) { case '0'; SetzeFarbe(clRed); case '1'; SetzeFarbe(clRed); case '2'; SetzeFarbe(clMaroon); case '3'; SetzeFarbe(clMaroon); } }
Hier ist die angesprochene SC die den Wert verarbeiten soll
Ich hoffe der Feher ist leicht zu finden oder zumindestens verständlichzumachen für mich Solltet ihr mehr Infos brauchen gebe ich euch alles was ihr wollt
greetz
r0k0ANHANG:
C++ sagt mir immer:
[C++ Fehler] Ampel.cpp(43): E2283 Verwenden Sie . oder -> zum Aufruf von 'TLRed::WechselPhase(int)'
-
Der gezeigte Code dürfte sich so nicht mal Compilieren lassen.
-
siehe Anhang!
-
Du musst eine Instanz der Klasse anlegen da die Methode nicht statisch ist.
Mir ist der Code ein wenig Framd. Man erkennt nicht, warum es für Grün Gelb Rot eigene Klassen gibt. Eine Ampel wäre an sich nur eine Klasse mit 4 Methoden für das Wechseln der Farbe.
TLRed ^ rot = gcnew TLRed(); rot->WechselPhase(p);
-
Stimmt, sollte erstmal alles in eine Classe schreiben und dann meld ich mich gleich noch mal, weil das hab ich alles nich so ganz verstanden