Methodenaufruf mit nur bestimmten Argumenten erlauben
-
otze schrieb:
benutz doch ein enum

Aja die Enummerations. Danke für den Tipp. Dennoch, ich habe echt mühe bei der Anwendung. Hoffe ich mache es so richtig...
//headerfile 'id.h' enum ENUM_FARBE { ROT, BLAU, GRUEN};// deklaration void Hello::foo(int iFarbe);// anwendung #include "id.h" Hello h; h.foo(ENUM_FARBE::BLAU); // 'BLAU' kennt er nicht h.foo(ENUM_FARBE(BLAU)); // okdas Problem ist aber immer noch, dass man bei foo immer noch einen beliebigen int-Wert, anstatt ENUM_FARBE übergeben kann.
-
ah ich denke ich habs:
void foo(enum ENUM_FARBE value);void Hello:foo(enum ENUM_FARBE value){ int i = value; }richtig

-
als argument solltest du auch kein int annehmen sondern das enum
schöner wäre sowasstruct Foo { enum FARBE { ROT, BLAU, GRUEN }; void Bar(FARBE e) { } }; int main() { Foo f; f.Bar(Foo::BLAU); }[edit]
zu langsam
-
das sowas nicht geht finde ich schade:
enum FARBE { ROT, BLAU, GRUEN }; void Foo( FARBE f ); ... Foo( FARBE.ROT ); // <--
-
Hallo und danke für das Codeschnipsel. Habe nun versucht, dieses auf mein Projekt anzuwenden, doch es geht leider nicht:
headerfile mit dem enum:
#ifndef _ENUMH_ #define _ENUMH_ enum FARBE {ROT, BLAU}; #endif;Klasse mit Methodendeklaration
#include "enums.h" // damit foo 'FARBE' kennt void foo(FARBE e);Anwendung:
#include "enums.h" void Usage::dou(){ MyClass mc; mc.foo( FARBE::ROT); // FEHLER: 'ROT' ist kein Element von FARBE }Was soll das nun wieder?
-
Sprech es einfach mit ROT an und lass das FARBE:: weg.
-
hehejo schrieb:
Sprech es einfach mit ROT an und lass das FARBE:: weg.
You're my new God. Thanks man.
-
miller_m schrieb:
schöner wäre sowas
struct Foo { enum FARBE { ROT, BLAU, GRUEN }; void Bar(FARBE e) { } }; int main() { Foo f; f.Bar(Foo::BLAU); }Oder gleich noch den operator () überladen
struct foo { enum FARBE {ROT, BLAU, GRUEN}; void operator() (FARBE e) { /* .. */ } }; int main() { foo f; f(foo::BLAU); return 0; }
-
Würd ich nicht machen wenns nicht unbedingt sein muss.
MfG SideWinder
-
SideWinder schrieb:
Würd ich nicht machen wenns nicht unbedingt sein muss.
Warum denn nicht?
-
Weil der op() nicht dazu da ist die jeweils meistgenutzte Methode zu ersetzen.
MfG SideWinder