<?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[Prüfen ob ein Wert in einem Enum enhalten ist.]]></title><description><![CDATA[<p>Hallo</p>
<p>Kann ich auf einfache Weise prüfen ob ein Wert in einem enum vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266594/prüfen-ob-ein-wert-in-einem-enum-enhalten-ist</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 05:21:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266594.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 May 2010 11:57:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 11:57:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Kann ich auf einfache Weise prüfen ob ein Wert in einem enum vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895648</guid><dc:creator><![CDATA[namespace_cpp]]></dc:creator><pubDate>Tue, 11 May 2010 11:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:01:41 GMT]]></title><description><![CDATA[<p>Vergleich ihn mit dem niedrigsten und höchsten Eintrag.<br />
Zur Laufzeit sind Enums auch nur ints, daher geht es anders nicht.<br />
Das Einfügen von &quot;künstlichen&quot; Enum-Werten wie eInvalid am Anfang und eLast am Ende erlaubt eine einfache Überprüfung im Quellcode, die auch kein Problem damit hat, sollten neue Einträge hinzu kommen.</p>
<p>EDIT: Was aber nicht hilft, so die Enum-Werte nicht fortlaufend sind.</p>
<p>Warum überhaupt Enums? Ich hasse Enums. <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/1895653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895653</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 May 2010 12:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:07:00 GMT]]></title><description><![CDATA[<p>Hm ok jetzt hasse ich sie auch <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/1895659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895659</guid><dc:creator><![CDATA[namespace_cpp]]></dc:creator><pubDate>Tue, 11 May 2010 12:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:15:26 GMT]]></title><description><![CDATA[<p>namespace_cpp schrieb:</p>
<blockquote>
<p>Hallo</p>
<p>Kann ich auf einfache Weise prüfen ob ein Wert in einem enum vorhanden ist?</p>
</blockquote>
<p>Wozu solltest du das brauchen? Enums sind nicht zum rechnen da. Deshalb sollte man auch nicht versuchen, Enums mit irgendwelchen Zahlen/Werten zu identifizieren/vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895664</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 12:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:28:56 GMT]]></title><description><![CDATA[<p>Naja, gibt schon Anwendungsfälle...<br />
Wenn man z.B. Daten in eine Textdatei schreibt und anschliessend wieder einliest könnte eine Plausibilitätsprüfung sinnvoll sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895677</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 11 May 2010 12:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:34:52 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Naja, gibt schon Anwendungsfälle...<br />
Wenn man z.B. Daten in eine Textdatei schreibt und anschliessend wieder einliest könnte eine Plausibilitätsprüfung sinnvoll sein.</p>
</blockquote>
<p>Die eingelesenen Textdaten sind strings. die kannst du mit Standardmitteln bestenfalls noch in einen int oder ähnliches konvertieren. Beides kannst du aber nicht einfach einem Enum-Wert zuweisen, daher musst du so oder so eine eigene Konvertierugnsfunktion schreiben, in der du die Umwandlung text-&gt;enumtyp bzw. int-&gt;enumtyp per switch/case oder if-else-kaskaden vornimmst. In beiden Fällen kommst du nicht drumrum den Wert mit allen erlaubten Werten zu vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895687</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 12:34:52 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:37:15 GMT]]></title><description><![CDATA[<p>Man könnte ja alle erlaubten enums in ein set packen und dann testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895690</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 11 May 2010 12:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:39:08 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Man könnte ja alle erlaubten enums in ein set packen und dann testen.</p>
</blockquote>
<p>Nochmal die Frage: wozu? Wenn du eine Variable vom Typ MyEnum hast, dann kann die nur die Werte enthalten, die du als mögliche Werte für MyEnum definiert hast. Was willst du da noch groß testen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895694</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 12:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:39:22 GMT]]></title><description><![CDATA[<p>Klingt für mich fast so als würde der Autor hier das Pendant zum &quot;Set&quot; von Delphi/Object Pascal suchen, also eine Art</p>
<p>if (Wert enthalten in Set)-Abfrage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895695</guid><dc:creator><![CDATA[Avantarius]]></dc:creator><pubDate>Tue, 11 May 2010 12:39:22 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:50:37 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Man könnte ja alle erlaubten enums in ein set packen und dann testen.</p>
</blockquote>
<p>Nochmal die Frage: wozu? Wenn du eine Variable vom Typ MyEnum hast, dann kann die nur die Werte enthalten, die du als mögliche Werte für MyEnum definiert hast. Was willst du da noch groß testen?</p>
</blockquote>
<p>Das stimmt nicht.</p>
<pre><code class="language-cpp">enum MyEnum
{
  YES = 0,
  NO
};

int main()
{
  MyEnum e = static_cast&lt;MyEnum&gt;(234234);
}
</code></pre>
<p>Das ist erlaubt, es ist allerdings undefiniert, welchen Wert <code>e</code> annehmen wird. Zum Beispiel MSVC und GCC lassen den Wert unverändert.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895707</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 11 May 2010 12:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 12:58:01 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">enum MyEnum
{
  YES = 0,
  NO,
  FILE_NOT_FOUND
};

int main()
{
  MyEnum e = static_cast&lt;MyEnum&gt;(234234);
}
</code></pre>
</blockquote>
<p>FTFY</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895718</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 11 May 2010 12:58:01 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 14:01:50 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int main()
{
  MyEnum e = static_cast&lt;MyEnum&gt;(234234);
}
</code></pre>
<p>Das ist erlaubt, es ist allerdings undefiniert, welchen Wert <code>e</code> annehmen wird.</p>
</blockquote>
<p>Wobei in der Praxis wahrscheinlich weniger willkürliche Literale da stehen als z.B. serialisierte Variablen (wie von DocShoe erwähnt). <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>
<p>Man kann sich natürlich auch eine Umwandlungstabelle String-Enum schreiben, aber oft reicht auch ein einfacher <code>int</code> . Sofern man dafür sorgt, dass das Programm die Daten korrekt behandelt und Pfusch des Anwenders nicht akzeptiert wird, ist das kein grosses Problem mehr.</p>
<p>Ansonsten ein Set oder bei aufeinanderfolgenden Werten eine Bereichsprüfung. Zumindest muss man die Prüfung von <code>enum</code> -Werten mühsam manuell erledigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895769</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 11 May 2010 14:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 16:08:14 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Das stimmt nicht.</p>
<pre><code class="language-cpp">enum MyEnum
{
  YES = 0,
  NO
};

int main()
{
  MyEnum e = static_cast&lt;MyEnum&gt;(234234);
}
</code></pre>
<p>Das ist erlaubt, es ist allerdings undefiniert, welchen Wert <code>e</code> annehmen wird. Zum Beispiel MSVC und GCC lassen den Wert unverändert.</p>
<p>Grüssli</p>
</blockquote>
<p>Na ok, mit fiesen Casts kann man immer alles kaputt machen, das lass ich nicht gelten. Wer sich mit gewalt ins Knie schießen will, den soll man davon auch nicht abhalten <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1895854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895854</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 May 2010 16:08:14 GMT</pubDate></item><item><title><![CDATA[Reply to Prüfen ob ein Wert in einem Enum enhalten ist. on Tue, 11 May 2010 16:11:15 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Na ok, mit fiesen Casts kann man immer alles kaputt machen, das lass ich nicht gelten. Wer sich mit gewalt ins Knie schießen will, den soll man davon auch nicht abhalten <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>
</blockquote>
<p>Es geht hier nicht um den Cast, es geht darum, dass ein Enum-Wert andere Werte speichern kann. Wenn du einen Enum-Wert serialisierst, bzw. deserialisierst, dann musst du seinen Wert auf Gültigkeit prüfen, da es eben möglich ist, dass andere Werte drin stehen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1895856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1895856</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 11 May 2010 16:11:15 GMT</pubDate></item></channel></rss>