<?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[Vordefinierte Farben&#x2F;Objekte]]></title><description><![CDATA[<p>Ich würde gerne vordefinierte Farben in meine Color-Klasse &quot;einbauen&quot;. Aus Java kenne ich dies als:</p>
<pre><code>// [...]
public static final Color RED = new Color(255, 0, 0, 255);
// [...]
</code></pre>
<p>In C++ habe ich es folgendermaßen probiert:</p>
<pre><code>// [...]
namespace FormGraphics {

class Color {

public:

// [...]

constexpr static Color *BLACK = new Color(0, 0, 0, 0);
constexpr static Color *BLUE;

// [...]

private:

// [...]

};

}
// [...]
</code></pre>
<p>Damit kriege ich aber folgenden Fehler:</p>
<pre><code>../src/Color.h:37:54: error: invalid use of incomplete type ‘class FormGraphics::Color’
  constexpr static Color *BLACK = new Color(0, 0, 0, 0);
</code></pre>
<p>Wenn mir jemand dabei weiterhelfen könnte wäre ich sehr dankbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327398/vordefinierte-farben-objekte</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 11:43:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327398.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Aug 2014 14:01:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 14:01:28 GMT]]></title><description><![CDATA[<p>Ich würde gerne vordefinierte Farben in meine Color-Klasse &quot;einbauen&quot;. Aus Java kenne ich dies als:</p>
<pre><code>// [...]
public static final Color RED = new Color(255, 0, 0, 255);
// [...]
</code></pre>
<p>In C++ habe ich es folgendermaßen probiert:</p>
<pre><code>// [...]
namespace FormGraphics {

class Color {

public:

// [...]

constexpr static Color *BLACK = new Color(0, 0, 0, 0);
constexpr static Color *BLUE;

// [...]

private:

// [...]

};

}
// [...]
</code></pre>
<p>Damit kriege ich aber folgenden Fehler:</p>
<pre><code>../src/Color.h:37:54: error: invalid use of incomplete type ‘class FormGraphics::Color’
  constexpr static Color *BLACK = new Color(0, 0, 0, 0);
</code></pre>
<p>Wenn mir jemand dabei weiterhelfen könnte wäre ich sehr dankbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412690</guid><dc:creator><![CDATA[symla]]></dc:creator><pubDate>Sat, 09 Aug 2014 14:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 14:13:35 GMT]]></title><description><![CDATA[<p>Erstmal: Lass den Java-Style sein:</p>
<pre><code>Class * obj = new Class(...); // Java-Style
// in C++ ist das
Class obj(...);
</code></pre>
<p>Und dann gibt es mehrere Möglichkeiten. Eine einfache, aber eventuell nicht so schöne Lösung wäre die Farben in ein Enum zu quetschen:</p>
<pre><code>enum Colors
{
    Black = 0x000000,
    Red = 0xff0000,
    Green = 0x00ff00,
    Blue = 0x0000ff,
    White = 0xffffff
};
</code></pre>
<p>Auf deine Art machst dus so:</p>
<pre><code>// Color.h
class Color
{
public:
	Color(int r, int g, int b);

public:
	static const Color RED;
	// ...
};

// Color.cpp
const Color Color::RED(255, 0, 0);
// ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2412693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412693</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 09 Aug 2014 14:13:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 14:19:06 GMT]]></title><description><![CDATA[<p>final in Java ist übrigens (afaik) nicht C++11 constexpr.<br />
constexpr bedeutet das der Ausdruck ein konstanter Ausdruck ist (duh),<br />
d.h. dass er zur compile time ausgewertet werden kann.<br />
Um UDTs wie Color constexpr zu machen müssen sie literale Typen sein, d.h. constexpr Konstruktor, etc.<br />
Alles relativ kompliziert. Und mit new geht das gar nicht.<br />
Ich empfehle dir aber ein gutes C++ Grundlagenbuch zu lesen, bevor du in C++ programmierst.<br />
C++ hat echt andere Konzepte als Java, insbesondere was Resourcenverwaltung angeht.<br />
Die sollte man schon können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412695</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 09 Aug 2014 14:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 16:00:35 GMT]]></title><description><![CDATA[<p>Es bietet sich an, die Konstanten außerhalb der Klasse zu definieren, da du sie nur so constexpr bekommen dürftest, was bei einer Color-Klasse wünschenswert ist.</p>
<pre><code>static constexpr Color ColorBlack(0,0,0);
static constexpr Color ColorWhite(255,255,255);
[...]
</code></pre>
<p>Und wurde ja schon gesagt, aber wenn du in C++ meinst, new brauchen zu müssen, dann solltest du als Reaktion immer sofort auf einem Forum fragen, was du falsch gemacht hast. Seit C++11 ist new dank Move-Konzept weitgehend überflüssig geworden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412716</guid><dc:creator><![CDATA[asp]]></dc:creator><pubDate>Sat, 09 Aug 2014 16:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 19:06:29 GMT]]></title><description><![CDATA[<blockquote>
<p>Seit C++11 ist new dank Move-Konzept weitgehend überflüssig geworden.</p>
</blockquote>
<p><code>new</code> hat mit Move-Semantiks genau gar nichts zu tun. Meinst du eher Smart-Pointer und <code>make_unique</code> ?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29873">@Nathan</a>: Kompliziert nicht gerade:</p>
<pre><code>struct Color
{
	std::uint8_t r, g, b;
};

static constexpr Color Red{0xff, 0, 0};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2412736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412736</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 09 Aug 2014 19:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 20:06:44 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<pre><code>struct Color
{
	std::uint8_t r, g, b;
};
</code></pre>
</blockquote>
<p>Warum mit <code>std::unit8_t</code> plattformabhängigkeit einhandeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412745</guid><dc:creator><![CDATA[kurint]]></dc:creator><pubDate>Sat, 09 Aug 2014 20:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vordefinierte Farben&#x2F;Objekte on Sat, 09 Aug 2014 20:12:14 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/29873">@Nathan</a>: Kompliziert nicht gerade:</p>
<pre><code>struct Color
{
	std::uint8_t r, g, b;
};

static constexpr Color Red{0xff, 0, 0};
</code></pre>
</blockquote>
<p>Ich sprach im allgemeinem.<br />
Von Klassen, die auch was tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2412749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2412749</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 09 Aug 2014 20:12:14 GMT</pubDate></item></channel></rss>