enum oder bool mit set und get fkt?
-
Hallo, mit dieser Frage werde ich mich jetzt wohl als totaler Amateur outen

Ich soll ein schachspiel programmieren und soll die Objekte in deiser Art anlegen:
King k(WHITE, 4, 0);vorne die Farbe, hinten x und y. Über das WARUM lässt sich streiten, aber gut, ich muss das so machen.
Nun dachte ich mir WHITE muss ja sowas wie ein enum sein, oder?
Da ich sehr auf get und setMethoden stehe, suche ich nun entsprechende Methoden (Rückgabewerte), die mir dies ermöglichen, kriege es aber nicht hin. Hier mal ein auszug aus meinem Header File:public: enum Color{WHITE, BLACK}; void setColor(Color); Color getColor(void); private: Color color;Naja, habe noch nicht so viel mit enums gearbeitet, befürchte aber dass dies totaler Blödsinn ist. Kann mich jemand aufklären, wie ich das am geschicktesten umsetzen kann?
-
Doch, sieht eigentlich gut aus:
class Field // ?? mal geraten { public: enum Color{WHITE, BLACK}; void setColor(Color color_ ) { color = color_; } Color getColor() {return color; } private: Color color; };Du musst nur beachten, wenn du das enum von ausserhalb der Klasse benutzt, musst du den Klassenname voranstellen
int main() //Oder irgendwo sonst { // field.setColor( Field::WHITE ); Field::Color = field getColor(); // }
-
das mit dem Klassennamen voranstellen wusste ich nicht. Muss man sogar im cpp-file machen. Ich komme aus der Java-Ecke, da ist noch vieles etwas gewöhnungsbedürftig...
Jetzt geht alles, also vielen Dank nochmal!
-
Ich kapier erst jetzt den Titel..
Wenn dus einfacher haben willst, kannst du natürlich ein bool nehmen.
Zur Lesbarkeit des Codes kannste typedefs machen:class Field { public: typedef true white; typedef false black; void setColor(bool color_ ) { color = color_; } bool getColor() {return color; } private: bool color; };Wegem Klassennamen, wenn du das enum (oder die typedefs) innerhalb der Klasse schreibst, dann musst ihn angeben, sonst ists im globalen Namensraum. Aber macht schon Sinn, das in die Klasse zu hauen.
-
Oder das enum nach außerhalb der Klasse verlegen:
enum Color{WHITE, BLACK}; class foo { };evtl. die Namen etwas obfuscaten ^^^
MfG
DDR-RAM