<?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-Schreibweisen]]></title><description><![CDATA[<p>Hi allerseits!</p>
<p>Ich habe enums immer folgendermaßen benutzt:</p>
<pre><code class="language-cpp">class Foo
{
public:
   enum Bar
   {
       Bazz
   };

   void f(Bar bar)
   {
     cout &lt;&lt; bar;
   }
};

int main()
{
   Foo foo;
   foo.f(Foo::Bar::Bazz);
}
</code></pre>
<p>Nun wurde mir gesagt, das sei nicht Standardkonform und der Compiler dürfe sowas garnicht compilieren. Nur das folgende sei zulässig:</p>
<pre><code class="language-cpp">int main()
{
   Foo foo;
   foo.f(Foo::Bazz);
}
</code></pre>
<p>Ist erster Aufruf (bzw. die Qualifikation des Enum-Wertes mit dem Namen seiner enum) tatsächlich unzulässig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164876/enum-schreibweisen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 05:43:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164876.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Nov 2006 14:41:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Enum-Schreibweisen on Mon, 13 Nov 2006 14:41:44 GMT]]></title><description><![CDATA[<p>Hi allerseits!</p>
<p>Ich habe enums immer folgendermaßen benutzt:</p>
<pre><code class="language-cpp">class Foo
{
public:
   enum Bar
   {
       Bazz
   };

   void f(Bar bar)
   {
     cout &lt;&lt; bar;
   }
};

int main()
{
   Foo foo;
   foo.f(Foo::Bar::Bazz);
}
</code></pre>
<p>Nun wurde mir gesagt, das sei nicht Standardkonform und der Compiler dürfe sowas garnicht compilieren. Nur das folgende sei zulässig:</p>
<pre><code class="language-cpp">int main()
{
   Foo foo;
   foo.f(Foo::Bazz);
}
</code></pre>
<p>Ist erster Aufruf (bzw. die Qualifikation des Enum-Wertes mit dem Namen seiner enum) tatsächlich unzulässig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173735</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Mon, 13 Nov 2006 14:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Mon, 13 Nov 2006 15:15:18 GMT]]></title><description><![CDATA[<p>Jordy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...

int main()
{
   Foo foo;
   foo.f(Foo::Bar::Bazz);
}
</code></pre>
<p>Nun wurde mir gesagt, das sei nicht Standardkonform und der Compiler dürfe sowas garnicht compilieren.</p>
</blockquote>
<p>Es gibt zwar einige Compiler, die das akzeptieren,<br />
lt Standard ist das jedoch NICHT gueltig.</p>
<p>- georg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1173752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1173752</guid><dc:creator><![CDATA[GeorgV]]></dc:creator><pubDate>Mon, 13 Nov 2006 15:15:18 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Mon, 13 Nov 2006 21:59:08 GMT]]></title><description><![CDATA[<p>GeorgV schrieb:</p>
<blockquote>
<p>Jordy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...

int main()
{
   Foo foo;
   foo.f(Foo::Bar::Bazz);
}
</code></pre>
<p>Nun wurde mir gesagt, das sei nicht Standardkonform und der Compiler dürfe sowas garnicht compilieren.</p>
</blockquote>
<p>Es gibt zwar einige Compiler, die das akzeptieren,<br />
lt Standard ist das jedoch NICHT gueltig.</p>
</blockquote>
<p>Was daran liegt, dass eine enum keinen eigenen Scope erzeugt, stattdessen wandern die Namen der in einer enum deklarierten Werte in den drüberliegenden Scope.<br />
Erkennt man auch daran:</p>
<pre><code class="language-cpp">enum Foo {
  bar
};

enum WoGibtsBier {
  bar
};
</code></pre>
<p>Ein konformer Compiler wird sich hier beschweren, da es keine zwei bars in einem Scope geben darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1174077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1174077</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 13 Nov 2006 21:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 11:32:57 GMT]]></title><description><![CDATA[<p>Daß eine Enum in den darüber liegenden Scope rutscht, war ja früher immer so, das war klar. Ich hatte halt den Verdacht, das sich im neueren C++ Standard diesbezüglich etwas geändet haben könnte, weil VC++ die unerblaubte Schreibweise mitmacht.</p>
<p>Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175854</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Thu, 16 Nov 2006 11:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 12:24:43 GMT]]></title><description><![CDATA[<p>Welcher VC? Mein MSVC7.1 prangert das an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175904</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 16 Nov 2006 12:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 12:28:33 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Welcher VC? Mein MSVC7.1 prangert das an.</p>
</blockquote>
<p>Ups ?!</p>
<p>Meiner machts klaglos mit. Auch 7.1</p>
<p>Bekommst du eine Warnung oder einen fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175907</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Thu, 16 Nov 2006 12:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 12:33:22 GMT]]></title><description><![CDATA[<p>Einen Compileerror natürlich. Ich habe jetzt nicht genau dein Beispiel ausprobiert, aber vor wenigen Wochen hatte ich genau an der gleichen Sache geknabbert, weil er einfach nicht wollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175908</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 16 Nov 2006 12:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 12:46:21 GMT]]></title><description><![CDATA[<p>Dann bin ich schlicht ratlos. Wäre schön wenn ich erreichen könnte, daß ich einen Error bekomme. Dann wäre es nämlich einfacher, meinen Code zu bereinigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1175917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1175917</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Thu, 16 Nov 2006 12:46:21 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 15:09:53 GMT]]></title><description><![CDATA[<p>Werde dein Beispiel mal heute abend zu Hause ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176009</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 16 Nov 2006 15:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 22:55:39 GMT]]></title><description><![CDATA[<p>Jordy schrieb:</p>
<blockquote>
<p>Dann bin ich schlicht ratlos. Wäre schön wenn ich erreichen könnte, daß ich einen Error bekomme. Dann wäre es nämlich einfacher, meinen Code zu bereinigen.</p>
</blockquote>
<p>wenn ich mich recht erinnere dann akzeptiert vc 7.1 solchen code und vc 8 bringt eine warning - defaultmaessig.</p>
<p>probier mal die compileroption /Za aus.<br />
die deaktiviert die ms language extensions, dann muesste der code eigentl rejected werden.</p>
<p>aber achtung, wenn du windows header verwendest, dann kannst du diese option gleich wieder vergessen. denn diese header haben nicht wirklich viel mit standardkonformen c++ zu tun...</p>
<p>- georg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176206</guid><dc:creator><![CDATA[GeorgV]]></dc:creator><pubDate>Thu, 16 Nov 2006 22:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Enum-Schreibweisen on Thu, 16 Nov 2006 23:34:44 GMT]]></title><description><![CDATA[<p>OK, habe es jetzt mal ausprobiert. Das erste Beispiel in diesem Thread funktioniert tatsächlich.</p>
<p>Habe aber mal folgendes ausprobiert, was auch das Szenario war, wo ich meinte, das ich es kürzlich auch hatte. Ist nicht ganz gleich, aber ähnlich:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

namespace X
{
  enum Bar 
   { 
       Bazz 
   }; 

   class Foo 
   { 
   public: 

      void f(Bar bar) 
      { 
          std::cout &lt;&lt; bar; 
      } 
   }; 
}

int main() 
{ 
   X::Foo foo; 
   foo.f(X::Bar::Bazz); 
}
</code></pre>
<p>Anstatt im Class-Scope ist MSVC7.1 bei Namespace-Scopes standardkonform. Denke ich jetzt mal, das es equivalent zum class-Scope laufen sollte?</p>
<p>Jedenfalls bekommt ich bei dem Beispiel folgendes:</p>
<blockquote>
<p>test.cpp(24) : error C2039: 'Bazz': Ist kein Element von 'X::Bar'<br />
test.cpp(6): Siehe Deklaration von 'X::Bar'<br />
test.cpp(24) : error C2065: 'Bazz': nichtdeklarierter Bezeichner</p>
</blockquote>
<p>Wenn ich</p>
<pre><code class="language-cpp">foo.f(X::Bazz);
</code></pre>
<p>funktioniert es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1176215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1176215</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 16 Nov 2006 23:34:44 GMT</pubDate></item></channel></rss>