enum class Problem
-
wand auf wirklich schrieb:
314159265358979 schrieb:
wirklich, ein BITFLAGS_ENUM(bla, fuh) hinschreiben ist wirklich total viel Aufwand.
Ich frage mich, warum du fuh brauchst. Das ist fehleranfällig und den Typen bekommst du doch auch durch
std::underlying_type<bla>::type.Dass es std::underlaying_type gibt, hab ich noch nicht verinnerlicht. Du hast natürlich Recht, so wäre es besser.
Hacker schrieb:
314159265358979 schrieb:
Bring ein Beispiel, aber schreib keinen Müll.
Ok.
enum Color { black, blue, green, cyan, red, magenta, brown, light_grey, dark_grey, light_blue, light_green, light_cyan, light_red, light_magenta, yellow, white }; //... SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextColour + 16 * BackgroundColor);Mal abgesehen, dass mich Beispiele mit Windoof-spezifischem Code ankotzen, ergibt dein Beispiel doch gar keinen Sinn. Was soll denn bei 2*black rauskommen? Woher weißt du, dass 165*red immer noch red ist?
-
314159265358979 schrieb:
Hacker schrieb:
314159265358979 schrieb:
Bring ein Beispiel, aber schreib keinen Müll.
Ok.
enum Color { black, blue, green, cyan, red, magenta, brown, light_grey, dark_grey, light_blue, light_green, light_cyan, light_red, light_magenta, yellow, white }; //... SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextColour + 16 * BackgroundColor);Mal abgesehen, dass mich Beispiele mit Windoof-spezifischem Code ankotzen, ergibt dein Beispiel doch gar keinen Sinn.
Selbstverständlich ergibt es Sinn.
314159265358979 schrieb:
Was soll denn bei 2*black rauskommen? Woher weißt du, dass 165*red immer noch red ist?
Deine Fragen ergeben doch gar keinen Sinn, denn
2 * blackist 0 und165 * redist selbstverständlich irgendeine Zahl (und wieso zum Teufel sollte die dannredsein!?).
-
Hacker schrieb:
Selbstverständlich ergibt es Sinn.
Nein, tut es nicht. Farben werden üblicherweise als RGB, HSV, CMYK oder andere dargestellt. Aber ein BBGCRMBL_GD_GL_BL_GL_CL_RL_MYW Farbsystem kenn ich noch nicht.
Hacker schrieb:
Deine Fragen ergeben doch gar keinen Sinn, denn
2 * blackist 0 und165 * redist selbstverständlich irgendeine Zahl (und wieso zum Teufel sollte die dannredsein!?).Die Fragen waren vermutlich falsch formuliert. Aber ich bin mal so frei und stelle direkt die fundementalere Frage: Welche interne Repräsentation schwebt dir vor? Das würde mich nun schon sehr interessieren. Am besten implementierst du den *-Operator, gibst jeder Farbe einen bestimmten Wert und schreibst eine Funktion std::array<unsigned char, 3> to_rgb(Color).
-
314159265358979 schrieb:
Hacker schrieb:
Selbstverständlich ergibt es Sinn.
Nein, tut es nicht. Farben werden üblicherweise als RGB, HSV, CMYK oder andere dargestellt.
Microsoft!

Aber mit 8 Bit kann man kein RGB machen (durch drei geht nicht, und für jeden Farbkanal zwei Bit ist zu wenig).314159265358979 schrieb:
Hacker schrieb:
Deine Fragen ergeben doch gar keinen Sinn, denn
2 * blackist 0 und165 * redist selbstverständlich irgendeine Zahl (und wieso zum Teufel sollte die dannredsein!?).Die Fragen waren vermutlich falsch formuliert. Aber ich bin mal so frei und stelle direkt die fundementalere Frage: Welche interne Repräsentation schwebt dir vor? Das würde mich nun schon sehr interessieren. Am besten implementierst du den *-Operator, gibst jeder Farbe einen bestimmten Wert und schreibst eine Funktion std::array<unsigned char, 3> to_rgb(Color).
Tut mir leid wenn ich dir jetzt sehr blöde Fragen stelle, aber was heißt "interne Repräsentation"? Wovon?
-
Hacker schrieb:
Aber mit 8 Bit kann man kein RGB machen (durch drei geht nicht, und für jeden Farbkanal zwei Bit ist zu wenig).
Keine Ahnung, wie du auf einmal auf 8 Bit pro Farbe kommst.
Hacker schrieb:
Tut mir leid wenn ich dir jetzt sehr blöde Fragen stelle, aber was heißt "interne Repräsentation"? Wovon?
Dein enum Color basiert auf einem Datentyp. Jeder deiner enum-Werte braucht einen entsprechenden Wert des Datentyps.
-
314159265358979 schrieb:
Hacker schrieb:
Selbstverständlich ergibt es Sinn.
Nein, tut es nicht. Farben werden üblicherweise als RGB, HSV, CMYK oder andere dargestellt. Aber ein BBGCRMBL_GD_GL_BL_GL_CL_RL_MYW Farbsystem kenn ich noch nicht.
http://en.wikipedia.org/wiki/Color_Graphics_Adapter, http://en.wikipedia.org/wiki/Video_Graphics_Array#Standard_text_modes

-
314159265358979 schrieb:
Hacker schrieb:
Aber mit 8 Bit kann man kein RGB machen (durch drei geht nicht, und für jeden Farbkanal zwei Bit ist zu wenig).
Keine Ahnung, wie du auf einmal auf 8 Bit pro Farbe kommst.
Ich jetzt auch nicht mehr (wieso passiert mir das immer?). Dann hat aber Microsoft mich mal wieder enttäuscht... ohne Farbkanäle...
314159265358979 schrieb:
Hacker schrieb:
Tut mir leid wenn ich dir jetzt sehr blöde Fragen stelle, aber was heißt "interne Repräsentation"? Wovon?
Dein enum Color basiert auf einem Datentyp. Jeder deiner enum-Werte braucht einen entsprechenden Wert des Datentyps.
[/quote]
Ist klar- die sind gegeben (0, 1, 2, ...).
-
Hacker schrieb:
314159265358979 schrieb:
Hacker schrieb:
Aber mit 8 Bit kann man kein RGB machen (durch drei geht nicht, und für jeden Farbkanal zwei Bit ist zu wenig).
Keine Ahnung, wie du auf einmal auf 8 Bit pro Farbe kommst.
Ich jetzt auch nicht mehr (wieso passiert mir das immer?). Dann hat aber Microsoft mich mal wieder enttäuscht... ohne Farbkanäle...
Das hat alles nichts mit Microsoft zu tun, so funktioniert nunmal der Text Mode am PC

-
Also ist 2*blue == green?
-
Wenn man das so haben will...imo macht es wenig Sinn all die Farben in einen enum zu stecken und erst recht nicht dann auch noch mit den Konstanten zu rechnen, da ist die Lösung von Microsoft (siehe MSDN) dann doch wesentlich sinnvoller...
-
Darauf will ich doch hinaus

-
Ich wollte nur das Rätsel um die Farbsysteme auflösen

-
Da gibts doch nichts zu lösen, was ein 16-Farben System ist, war mir doch klar. Aber 16 Grundfarben ist ein Unterschied. :p
-
Okay, okay, ich ergebe mich, da habt ihr mich heute wieder geschnappt

-
dot schrieb:
Wenn man das so haben will...imo macht es wenig Sinn all die Farben in einen enum zu stecken und erst recht nicht dann auch noch mit den Konstanten zu rechnen, da ist die Lösung von Microsoft (siehe MSDN) dann doch wesentlich sinnvoller...
Link?
Ein weiterer Grund, dass ich enum class verwendet habe war übrigens, dass man diese forwarden kann.
-
Enumerator2 schrieb:
dot schrieb:
Wenn man das so haben will...imo macht es wenig Sinn all die Farben in einen enum zu stecken und erst recht nicht dann auch noch mit den Konstanten zu rechnen, da ist die Lösung von Microsoft (siehe MSDN) dann doch wesentlich sinnvoller...
Link?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047.aspx