Enumeration
-
Hallo Leute,
ich möchte ein Programmm schreiben, in welchen eine Funktion ein Element einer Aufzählung als Eingangsvariable verwendet, den Wert dieser Elements mit 2 multipliziert und wieder zurückgibt. In meinen derzeitigen Programm werden nur Fehlermeldungen ausgespuckt, was mache ich verkehrt? Vielen Dank für eure Hilfe!
Quellcode:
class demo
{public:
enum ModeEnum{MODE_OFF,MODE_UNCTROLLED};ModeEnum Mode;
int GetMode(MODE_OFF){
return 2*MODE_OFF;
}
};int main()
{
demo P;P.GetMode(MODE_OFF);
return 0;
}
-
Was sagen denn die Fehlermeldungen?
-
Eine Funktion schaut so aus:
Rückgabedatentyp Funktionsname( Parameterdatentyp Parametername )
Und jetzt schau mal, was du gemacht hast.
-
@C++Pete
MODE_OFF
verhält sich zuModeEnum
wie0
zuint
.Würdest du auf die Idee kommen eine Funktion mit
int GetMode(0)
definieren zu wollen?
Falls nicht: wieso meinst du dann dassint GetMode(MODE_OFF)
funktionieren sollte?
-
Meinen derzeitiger Quelltext sieht jetzt wie folgt aus:
class demo
{public:
enum ModeEnum{MODE_OFF,MODE_UNCTROLLED};ModeEnum Mode;
int GetMode(enum MODE_OFF){
return 2;
}
};int main()
{
demo P;P.GetMode(0);
return 0;
}Jetzt liefert mir der Compiler die Fehlermeldung zum Aufruf der Funktion
im Main-Teil:error C2664: 'demo::GetMode': Konvertierung des Parameters 1 von 'int' in 'MODE_OFF' nicht möglich
1> Konvertierung in einen Enumerationstypen erfordert explizite Typumwandlung (static_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Was muss ich es umschreiben? Vielen Dank für eure Hilfe!
-
ohoh, ich glaube, du musst das Kapitel Funktionen nochmals lesen. Fangen wir mal mit einer kleinen Übung an. Sag mir mal, wie die Signatur einer Funktion prinzipiell aussieht.
-
Rückgabetyp Funktionsname(Parameterliste)
{
Anweisungen
}
-
MODE_OFF ist ein Wert kein Funktionsparameter.
int GetMode(enum MODE_OFF)
Falsch.
-
C++Pete schrieb:
Rückgabetyp Funktionsname(Parameterliste)
{
Anweisungen
}Richtig. Wie schaut denn so eine Parameterliste genau aus? Also die Bestandteile?
-
Parameterliste: (Parameterdatentyp Parameterwert, Parameterdatentyp1 Paramaeterwert1...)
-
Kleiner Tipp am Rande...
int GetMode(ModeEnum MODE){ return 2; }
-
Vielen Dank für deine Antwort...wie gestalet sich der Aufruf der Funktion im Main-Teil über das Objekt P?
P.GetMode(0); bzw. P.GetMode(ModeEnum)
funktioniert leíder nicht.
-
Fexis schrieb:
Kleiner Tipp am Rande...
int GetMode(ModeEnum MODE){ return 2; }
Jetzt hast du meine Unterrichtsstunde kaputt gemacht.
-
Jetzt hast du meine Unterrichtsstunde kaputt gemacht.
sry, aber ich konnte einfach nicht mehr anders
P.GetMode(0); bzw. P.GetMode(ModeEnum)
...was du übergeben musst ist die Variable, nicht den Typen.
Du deklarierst ja nicht, du übergibst!P.GetMode(demo::ModeEnum::MODE_OFF)
ODER:
P.GetMode(P.Mode)
Wenn du die erste Variante benutzen möchtest, kannst du getrost deine Variable Mode aus der Klasse demo entfernen
-
Besten Dank!
-
Fexis schrieb:
Jetzt hast du meine Unterrichtsstunde kaputt gemacht.
sry, aber ich konnte einfach nicht mehr anders
Lass es.
Jede Antwort die du ihm gibst führt zu 2 neuen Fragen.
Was ja noch OK ist, so lange er sich die Antworten auf durchschnittlich > 1 dieser Fragen selbst ergoogeln würde.