<?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[enum und Konstanten äquivalent (?)]]></title><description><![CDATA[<p>Sind die folgenden beiden codestücke zu 100% gleichwertig:</p>
<pre><code class="language-cpp">enum Element{
 px = 0, py = 1, pz = 2, u = 3
};
</code></pre>
<p>und:</p>
<pre><code class="language-cpp">const int px = 0;
const int py = 1;
const int pz = 2;
const int u = 3;
</code></pre>
<p>Besteht der Sinn von enum nur darin, dass man weniger schreiben muss, wenn man einmal besonders viele Konstanten braucht, kann ich das sozusagen als 'Abkürzung' betrachten in solchen Fällen, oder gibt's dabei Besonderheiten oder Probleme die passieren könnten, wenn ich ein enum einfach nur als Konstantenliste ansehe ? Sind enum-Konstanten ein ebensoguter Ersatz für #define Anweisungen wie gewöhnliche const-Konstanten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239625/enum-und-konstanten-äquivalent</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 10:03:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239625.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Apr 2009 20:12:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sat, 25 Apr 2009 20:12:48 GMT]]></title><description><![CDATA[<p>Sind die folgenden beiden codestücke zu 100% gleichwertig:</p>
<pre><code class="language-cpp">enum Element{
 px = 0, py = 1, pz = 2, u = 3
};
</code></pre>
<p>und:</p>
<pre><code class="language-cpp">const int px = 0;
const int py = 1;
const int pz = 2;
const int u = 3;
</code></pre>
<p>Besteht der Sinn von enum nur darin, dass man weniger schreiben muss, wenn man einmal besonders viele Konstanten braucht, kann ich das sozusagen als 'Abkürzung' betrachten in solchen Fällen, oder gibt's dabei Besonderheiten oder Probleme die passieren könnten, wenn ich ein enum einfach nur als Konstantenliste ansehe ? Sind enum-Konstanten ein ebensoguter Ersatz für #define Anweisungen wie gewöhnliche const-Konstanten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701286</guid><dc:creator><![CDATA[Einfach2]]></dc:creator><pubDate>Sat, 25 Apr 2009 20:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sat, 25 Apr 2009 20:57:43 GMT]]></title><description><![CDATA[<p>Ein enum kann etwas mehr. Wenn du in ein enum Werte reinstopfst dann mußt du keine Zahlen dazu schreiben, jedes Element nimmt automatishc den Wert des vorhergehenden+1 an, außer man weist ihnen wie du explizite werte zu, dh das hier wäre ausreichend gewesen:</p>
<pre><code class="language-cpp">enum Element{
 px, py, pz, u
};
</code></pre>
<p>Außerdem sind alle Inhalte des enum über den :: operator erreichbar sofern das enum einen Namen hat, außerdem kannst du bei Funktionen als Argument eine Variable des Typs deines enum erwarten</p>
<pre><code class="language-cpp">void myfunc(Element ele);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1701301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701301</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sat, 25 Apr 2009 20:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 11:15:57 GMT]]></title><description><![CDATA[<p>Für Konstanten nimmt man eigentlich eher <code>const</code> . Wenn man diese gleich mit Literalen initialisiert, sind die Werte schon zur Kompilierzeit bekannt.</p>
<p>Enumerationen sind Aufzählungen und verfolgen ein weiteres Konzept: Einem Typen eine genau definierte Anzahl Zustände mit gewisser Compiletime-Typsicherheit zu erlauben.</p>
<pre><code class="language-cpp">enum Color
{
    Green,
    Pink,
    Orange
};

Color c = Pink; // Initialisierung mit Enumerator
c = 3;          // Zuweisungen von Zahlen funktionieren nicht
</code></pre>
<p>Einfach2 schrieb:</p>
<blockquote>
<p>Besteht der Sinn von enum nur darin, dass man weniger schreiben muss, wenn man einmal besonders viele Konstanten braucht, kann ich das sozusagen als 'Abkürzung' betrachten in solchen Fällen</p>
</blockquote>
<p>Nein, das auf keinen Fall. Wie gesagt kann <code>enum</code> für eine Sammlung von zusammengehörigen Zuständen verwendet werden.</p>
<p>Einfach2 schrieb:</p>
<blockquote>
<p>oder gibt's dabei Besonderheiten oder Probleme die passieren könnten, wenn ich ein enum einfach nur als Konstantenliste ansehe ?</p>
</blockquote>
<p>Probleme sollte es eigentlich keine geben. Ich persönlich nehme aber lieber <code>const</code> , wenn es sich um Konstanten handelt, und <code>enum</code> , wenn Aufzählungen benötigt werden. Das ist für mich eine klarerer Trennung.</p>
<p>Einfach2 schrieb:</p>
<blockquote>
<p>Sind enum-Konstanten ein ebensoguter Ersatz für #define Anweisungen wie gewöhnliche const-Konstanten ?</p>
</blockquote>
<p><code>#define</code> für Konstanten hat in C++ eigentlich nicht viel zu suchen (dazu gab es hier einige Threads). Da wären <code>const</code> -Variablen der massiv bessere Ersatz.</p>
<p>Xebov schrieb:</p>
<blockquote>
<p>Außerdem sind alle Inhalte des enum über den :: operator erreichbar sofern das enum einen Namen hat</p>
</blockquote>
<p>Die Enumeratoren werden leider immer in den umliegenden Namensraum ausgeleert (mit <code>enum class</code> im neuen Standard wird das besser). Ich bin mir an dieser Stelle nicht ganz sicher, aber ich glaube, es ist nicht standardkonform, Enumeratoren über den Scope-Operator anzusprechen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701436</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 26 Apr 2009 11:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 11:32:27 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Die Enumeratoren werden leider immer in den umliegenden Namensraum ausgeleert (mit <code>enum class</code> im neuen Standard wird das besser). Ich bin mir an dieser Stelle nicht ganz sicher, aber ich glaube, es ist nicht standardkonform, Enumeratoren über den Scope-Operator anzusprechen.</p>
</blockquote>
<p>Ja das ausleeren ist ein echtes Ärgerniss damit ärgere ich mich schon den ganzen tag herum, ich glaub ich werd meine in nen eigenen namespace schieben damit ruhe ist. Zugriff über den Scope Operator Funktioniert in VC++ ich glauba ber das gehört zum neuen Standard.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701445</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701445</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 26 Apr 2009 11:32:27 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 11:39:16 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Ja das ausleeren ist ein echtes Ärgerniss damit ärgere ich mich schon den ganzen tag herum, ich glaub ich werd meine in nen eigenen namespace schieben damit ruhe ist.</p>
</blockquote>
<p>Ein eigener Namensraum oder eine Klasse um den <code>enum</code> ist ein üblicher Workaround. Aber ganz sauber ist er trotzdem nicht...</p>
<p>Xebov schrieb:</p>
<blockquote>
<p>Zugriff über den Scope Operator Funktioniert in VC++ ich glauba ber das gehört zum neuen Standard.</p>
</blockquote>
<p>&quot;Funktioniert&quot; würde ich relativieren, man erhält mit MSVC++ eine Compilerwarnung:</p>
<blockquote>
<p>warning C4482: Nicht dem Standard entsprechende Erweiterung: Enumeration &quot;Color&quot; wird im qualifizierten Namen verwendet.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1701448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701448</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 26 Apr 2009 11:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 11:45:57 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ein eigener Namensraum oder eine Klasse um den <code>enum</code> ist ein üblicher Workaround. Aber ganz sauber ist er trotzdem nicht...</p>
</blockquote>
<p>Naja man gibt ihm einafchd en selben Namen wie dem enum dann kann man ihn mit dem neuen Standart wegmachen.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>&quot;Funktioniert&quot; würde ich relativieren, man erhält mit MSVC++ eine Compilerwarnung:</p>
<blockquote>
<p>warning C4482: Nicht dem Standard entsprechende Erweiterung: Enumeration &quot;Color&quot; wird im qualifizierten Namen verwendet.</p>
</blockquote>
</blockquote>
<p>Naja es ist ja nur ne warnung, die Frage ist ja ob es damit wirklich schon richtig Funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701456</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 26 Apr 2009 11:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 13:01:13 GMT]]></title><description><![CDATA[<p>Nur zur Verdeutlichung:</p>
<p>Vollqualifizietrer Zugriff:</p>
<pre><code class="language-cpp">enum A
{
   B,
   C
};

// Zugriff:
A a = A::B; // erzuegt Warnung
</code></pre>
<p>Workaround mit Namespace:</p>
<pre><code class="language-cpp">namespace A
{
enum E
{
   B,
   C
};
}

// Zugriff:
A a = A::B; // erzuegt keine Warnung
</code></pre>
<p>Scheint mir Xebov brachte was durcheinander.<br />
Simon</p>
<p>Edit:<br />
BTW, das hat nichts mit neuen Standard zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701499</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 26 Apr 2009 13:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to enum und Konstanten äquivalent (?) on Sun, 26 Apr 2009 13:18:00 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>BTW, das hat nichts mit neuen Standard zu tun.</p>
</blockquote>
<p>Nicht, habe ich dan das hier falsch verstanden?<br />
<a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations" rel="nofollow">http://en.wikipedia.org/wiki/C%2B%2B0x#Strongly_typed_enumerations</a><br />
(ich meine den text unter dem 3. Beispiel)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1701510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1701510</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sun, 26 Apr 2009 13:18:00 GMT</pubDate></item></channel></rss>