<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Wie RGB-Farbklasse am besten realisieren?]]></title><description><![CDATA[<p>Hallo zusammen :schland: ,</p>
<p>ich habe eine Color-Klasse mit red green und blue komponente (ints).<br />
Jetzt will ich, dass diese Klasse einfacher zu benutzen ist, indem man z.B. im Konstruktur eine Farbe vorgeben kann:</p>
<pre><code class="language-cpp">Color col(Color::DarkBlue);
</code></pre>
<p>Hierfür hätte ich in der Klasse dann eine Enumeration Colors:</p>
<pre><code class="language-cpp">enum Colors {
            Black,
            White,
            DarkGray,
            Gray,
            LightGray,
            Red,
            Green,
            Blue,
            Cyan,
            Magenta,
            Yellow,
            DarkRed,
            DarkGreen,
            DarkBlue,
            DarkCyan,
            DarkMagenta,
            DarkYellow
        };
</code></pre>
<p>Aber wie würde ich das jetzt im Konstruktor oder z.B. in der folgenden set-Methode auswerten?</p>
<pre><code class="language-cpp">Color col,
 col.setColor(Color::DarkBlue);
</code></pre>
<p>Tatsächlich mit einer ganz langen switch-Anweisung, die dann folgendes macht?</p>
<pre><code class="language-cpp">switch(newCol) {
case DarkBlue:
r = g = 0;
b = 128;
break;

// usw.
</code></pre>
<p>Bitte um Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268718/wie-rgb-farbklasse-am-besten-realisieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 14:51:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268718.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Jun 2010 14:52:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 14:52:34 GMT]]></title><description><![CDATA[<p>Hallo zusammen :schland: ,</p>
<p>ich habe eine Color-Klasse mit red green und blue komponente (ints).<br />
Jetzt will ich, dass diese Klasse einfacher zu benutzen ist, indem man z.B. im Konstruktur eine Farbe vorgeben kann:</p>
<pre><code class="language-cpp">Color col(Color::DarkBlue);
</code></pre>
<p>Hierfür hätte ich in der Klasse dann eine Enumeration Colors:</p>
<pre><code class="language-cpp">enum Colors {
            Black,
            White,
            DarkGray,
            Gray,
            LightGray,
            Red,
            Green,
            Blue,
            Cyan,
            Magenta,
            Yellow,
            DarkRed,
            DarkGreen,
            DarkBlue,
            DarkCyan,
            DarkMagenta,
            DarkYellow
        };
</code></pre>
<p>Aber wie würde ich das jetzt im Konstruktor oder z.B. in der folgenden set-Methode auswerten?</p>
<pre><code class="language-cpp">Color col,
 col.setColor(Color::DarkBlue);
</code></pre>
<p>Tatsächlich mit einer ganz langen switch-Anweisung, die dann folgendes macht?</p>
<pre><code class="language-cpp">switch(newCol) {
case DarkBlue:
r = g = 0;
b = 128;
break;

// usw.
</code></pre>
<p>Bitte um Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911716</guid><dc:creator><![CDATA[ColorRGB]]></dc:creator><pubDate>Sun, 13 Jun 2010 14:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:06:47 GMT]]></title><description><![CDATA[<p>müsstest du einzeln parsen.</p>
<p>generell werden farben aber eigentlich in integern hinterlegt.</p>
<p>du brauchst dann nur methoden wie:</p>
<p>setr, setg, setb und getr, getg, getb um die farbwerte zu bearbeiten.</p>
<p>Denk mal nach! In einer Int ist GENUG platz, um die 3 Farbwerte zu speichern!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911724</guid><dc:creator><![CDATA[farbkenner]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:12:26 GMT]]></title><description><![CDATA[<p>Anders angehen, denn <code>enum</code> kann man nur mit integralen Konstanten direkt assoziieren. Erstelle eine Sammlung von Konstanten in einem Namensraum.</p>
<pre><code class="language-cpp">namespace Colors
{
    const Color Black(0, 0, 0);
    const Color Red(255, 0, 0);
    // ...
};
</code></pre>
<p>Vielleicht auch <code>extern</code> machen und in einer .cpp-Datei definieren, dann existiert jede Konstante nur einmal und nicht pro Modul.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911726</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:15:27 GMT]]></title><description><![CDATA[<p>Für die RGB-Farbwerte kannst du jeweils ein unsigned char nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911728</guid><dc:creator><![CDATA[....]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:39:37 GMT]]></title><description><![CDATA[<p><em>Etwas OffTopic:</em></p>
<p>farbkenner schrieb:</p>
<blockquote>
<p>In einer Int ist GENUG platz, um die 3 Farbwerte zu speichern!</p>
</blockquote>
<p>Interessant, daran hab ich gar nicht gedacht. Hm, im Hinblick auf die <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-268613.html" rel="nofollow">aktuelle Diskussion</a> scheint sich da doch noch ein Anwendungszweck für Compilezeit-Berechnungen mit Template-Metaprogrammierung zu ergeben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">typedef unsigned int Uint32;
typedef unsigned char Uint8;

template &lt;Uint8 R, Uint8 G, Uint8 B&gt;
struct ComposeRGB
{
    static const Uint32 Value = (R &lt;&lt; 24) | (G &lt;&lt; 16) | (B &lt;&lt; 8);
};

template &lt;Uint32 RGB&gt;
struct DecomposeRGB
{
    static const Uint8 ValueR = (RGB &gt;&gt; 24) &amp; 0xff;
    static const Uint8 ValueG = (RGB &gt;&gt; 16) &amp; 0xff;
    static const Uint8 ValueB = (RGB &gt;&gt; 8) &amp; 0xff;
};

enum ColorType
{
    Black = ComposeRGB&lt;0, 0, 0&gt;::Value,
    Red = ComposeRGB&lt;255, 0, 0&gt;::Value,
    // ...
};

template &lt;Uint32 RGB&gt;
Color CreateColor()
{
    return Color(
        DecomposeRGB&lt;RGB&gt;::ValueR,
        DecomposeRGB&lt;RGB&gt;::ValueG,
        DecomposeRGB&lt;RGB&gt;::ValueB);
}
</code></pre>
<p>Man könnte auch leicht Alpha einbauen. Aber diese Lösung nicht in der Praxis verwenden! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /><br />
Wäre höchstens sinnvoll, wenn man noch weitere Dinge zur Compilezeit berechnen müsste, was ich mir aber schlecht vorstellen kann.</p>
<p>Realisieren würde ichs nach wie vor mit meinem oberen Ansatz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911736</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:39:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:46:06 GMT]]></title><description><![CDATA[<p>Das brauchst du eigentlich alles gar nicht.</p>
<p>Am Sinnvollsten ist es doch einfach, eine stinknormale int zu verwenden und in einer Bibliothek die Funktionen zur Farbauswertung zu schreiben.</p>
<p>Dann kannst du z.B sowas machen:</p>
<p>int red;<br />
black = makecol(255, 0, 0);</p>
<p>draw_circle(red, circlepos, 5);//draw_circle(int color color, pos position, int radius);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911737</guid><dc:creator><![CDATA[Farbkenner]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:46:57 GMT]]></title><description><![CDATA[<p>gemeint war natürlich: red = makecol(255, 0, 0);</p>
<p>nix black <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911738</guid><dc:creator><![CDATA[Farbkenner]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 15:53:40 GMT]]></title><description><![CDATA[<p>Farbkenner schrieb:</p>
<blockquote>
<p>Am Sinnvollsten ist es doch einfach, eine stinknormale int zu verwenden und in einer Bibliothek die Funktionen zur Farbauswertung zu schreiben.</p>
</blockquote>
<p>Aber warum zuerst drei einzelne RGB-Werte haben, die in einen <code>int</code> stopfen, und diesen <code>int</code> nachher wieder zerstückeln? Für sowas hat er ja eine Klasse <code>Color</code> , die wahrscheinlich einzelne R-, G- und B-Werte hat. Ist auch schneller.</p>
<p>Oder sag mir, was an deinem Vorschlag besser als an</p>
<pre><code class="language-cpp">namespace Colors
{
    const Color Black(0, 0, 0);
    const Color Red(255, 0, 0);
    // ...
};
</code></pre>
<p>ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911739</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Jun 2010 15:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 16:00:44 GMT]]></title><description><![CDATA[<p>Gibt vor- und nachteile.</p>
<p>Meine Lösung ist einfacher zu schreiben - zweifels ohne - und mindestens gleich gut bis besser zu warten.</p>
<p>Zudem ist es ein Vorteil bzgl. Kapselung:</p>
<p>Alle anderen Klassen/whatever müssen nichts wissen von einer &quot;Farbklasse&quot;. du gibts ihnen einen int Wert mit. Dass dieser eine Farbe beinhaltet kann egal sein.</p>
<p>Mitlinken musst du die Bibliothek dann sowieso.</p>
<p>Aber wie gesagt. Gibt einige pro und contra argumente.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911742</guid><dc:creator><![CDATA[Farbkenner]]></dc:creator><pubDate>Sun, 13 Jun 2010 16:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 16:04:19 GMT]]></title><description><![CDATA[<p>Ich werde es nun wie Nexus lösen, besten dank an euch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911744</guid><dc:creator><![CDATA[ColorRGB]]></dc:creator><pubDate>Sun, 13 Jun 2010 16:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 16:06:58 GMT]]></title><description><![CDATA[<p>kein problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911745</guid><dc:creator><![CDATA[Farbkenner]]></dc:creator><pubDate>Sun, 13 Jun 2010 16:06:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie RGB-Farbklasse am besten realisieren? on Sun, 13 Jun 2010 18:25:12 GMT]]></title><description><![CDATA[<p>Farbkenner schrieb:</p>
<blockquote>
<p>Meine Lösung ist einfacher zu schreiben - zweifels ohne - und mindestens gleich gut bis besser zu warten.</p>
</blockquote>
<p>Schlechter Wartbar da du keine Typsicherheit hast.</p>
<blockquote>
<p>Zudem ist es ein Vorteil bzgl. Kapselung:</p>
<p>Alle anderen Klassen/whatever müssen nichts wissen von einer &quot;Farbklasse&quot;. du gibts ihnen einen int Wert mit. Dass dieser eine Farbe beinhaltet kann egal sein.</p>
</blockquote>
<p>Ne, das macht keinen Sinn was du da sagst.</p>
<blockquote>
<p>Gibt einige pro und contra argumente.</p>
</blockquote>
<p>Gibt eigentlich nur eins dazu zu sagen: mach es so wie Nexus sagt, alles andere ist dumm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911796</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 13 Jun 2010 18:25:12 GMT</pubDate></item></channel></rss>