<?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[Flags in eigenen Namensräumen]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich möchte flags innerhalb einer Klasse und innerhalb von Namensräume kapseln.<br />
Das beste was mir da als Lösung eingefallen ist folgendes:</p>
<pre><code class="language-cpp">class Klasse
{
  public:
  struct Eigenschaften
  {
     enum
     {
       EigenschaftA = 0;
       EigenschaftB = 0&lt;&lt;0;
       EigenschaftC = 0&lt;&lt;1;
     };
  };

  int eigenschaft;
};

Klasse objekt;
objekt.eigenschaft |= Klasse::Eigenschaften::EigenschaftB;
</code></pre>
<p>Gibt es da eine bessere Lösung ohne die Struktur?<br />
Danke für Eure Ratschläge.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255692/flags-in-eigenen-namensräumen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 19:58:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255692.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Dec 2009 20:48:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 20:48:10 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich möchte flags innerhalb einer Klasse und innerhalb von Namensräume kapseln.<br />
Das beste was mir da als Lösung eingefallen ist folgendes:</p>
<pre><code class="language-cpp">class Klasse
{
  public:
  struct Eigenschaften
  {
     enum
     {
       EigenschaftA = 0;
       EigenschaftB = 0&lt;&lt;0;
       EigenschaftC = 0&lt;&lt;1;
     };
  };

  int eigenschaft;
};

Klasse objekt;
objekt.eigenschaft |= Klasse::Eigenschaften::EigenschaftB;
</code></pre>
<p>Gibt es da eine bessere Lösung ohne die Struktur?<br />
Danke für Eure Ratschläge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817370</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Thu, 03 Dec 2009 20:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 21:02:51 GMT]]></title><description><![CDATA[<p>eigtl nicht(zumindest im aktuellen standard nicht):<br />
(du hast nen paar fehler drin, z.bsp. die semikolons bei dir sind falsch)</p>
<p>wieso im name noch mal eigenschaft?<br />
so würd ichs machen:</p>
<pre><code class="language-cpp">struct enum_name
  {
     enum T
     {
       A = 0,
       B = 0&lt;&lt;0,
       C = 0&lt;&lt;1
     };
  };
</code></pre>
<p>das die werte ein wenig sinnlos sind, ist dir bekannt?<br />
das erste element hat btw _immer_ den wert 0...</p>
<p>im nächsten standard darf man dann<br />
<code>enum_name::enum_wert</code> schreiben (der msvc konnte das schon immer) - aber im moment ist es nicht standard-konform, wenn man das schreibt - also muss man diesen trick noch ein wenig nutzen^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817393</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 03 Dec 2009 21:02:51 GMT</pubDate></item><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 21:10:59 GMT]]></title><description><![CDATA[<p>OK, danke.<br />
Echt blöd dass es nicht von vornherein qualifizierte enum-namen gibt.</p>
<p>meinte natürlich:</p>
<pre><code class="language-cpp">enum
{
   EigenschaftA = 0,
   EigenschaftB = 1&lt;&lt;0,
   EigenschaftC = 1&lt;&lt;1,
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1817398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817398</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Thu, 03 Dec 2009 21:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 21:21:50 GMT]]></title><description><![CDATA[<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>OK, danke.<br />
Echt blöd dass es nicht von vornherein qualifizierte enum-namen gibt.</p>
</blockquote>
<p>Japp - das hat man jetzt aber gott sei dank endlich auch erkannt und versucht das nachzurüsten : &gt;<br />
der gcc kann das bestimmt auch schon!?</p>
<p>ich würd dem enum trotzdem einen namen geben - das schadet nie und oft ist es so gar nötig <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="😛"
    /><br />
so könnte man z.bsp. auch einfach ne fkt <code>fuege_eigenschaft_hinzu(enum_name::T wert)</code> schreiben - was ich machen würde <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>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817413</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 03 Dec 2009 21:21:50 GMT</pubDate></item><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 21:38:11 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>sqrt(-1) schrieb:</p>
<blockquote>
<p>OK, danke.<br />
Echt blöd dass es nicht von vornherein qualifizierte enum-namen gibt.</p>
</blockquote>
<p>Japp - das hat man jetzt aber gott sei dank endlich auch erkannt und versucht das nachzurüsten : &gt;<br />
der gcc kann das bestimmt auch schon!?</p>
</blockquote>
<p>Der ICC kann es, meckert aber.</p>
<blockquote>
<p>ich würd dem enum trotzdem einen namen geben - das schadet nie und oft ist es so gar nötig <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="😛"
    /><br />
so könnte man z.bsp. auch einfach ne fkt <code>fuege_eigenschaft_hinzu(enum_name::T wert)</code> schreiben - was ich machen würde <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>
</blockquote>
<p>Nur dann kann ich doch keine bit-Operatoren nutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817426</guid><dc:creator><![CDATA[sqrt(-1)]]></dc:creator><pubDate>Thu, 03 Dec 2009 21:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Flags in eigenen Namensräumen on Thu, 03 Dec 2009 23:27:54 GMT]]></title><description><![CDATA[<p>sqrt(-1) schrieb:</p>
<blockquote>
<blockquote>
<p>ich würd dem enum trotzdem einen namen geben - das schadet nie und oft ist es so gar nötig <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="😛"
    /><br />
so könnte man z.bsp. auch einfach ne fkt <code>fuege_eigenschaft_hinzu(enum_name::T wert)</code> schreiben - was ich machen würde <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>
</blockquote>
<p>Nur dann kann ich doch keine bit-Operatoren nutzen?</p>
</blockquote>
<p>das versteh ich nicht...</p>
<pre><code class="language-cpp">struct enum_name
{
  enum T
  {
    nothing,
    a = 1&lt;&lt;0,
    b = 1&lt;&lt;1,

    default = nothing
  };
};

#include &lt;iostream&gt;

struct foo
{
public:
  void add(enum_name::T to_add)
  {
    foo_ |= to_add;
  }

  void print()
  {
    if(foo_ &amp; enum_name::a) std::cout &lt;&lt; 'a';
    if(foo_ &amp; enum_name::b) std::cout &lt;&lt; 'b';

	std::cout &lt;&lt; std::endl;
  }

  foo()
  : foo_(enum_name::default)
  {}
private:
  int foo_;
};

int main()
{
  foo bar;
  bar.add(enum_name::a);
  bar.print();
}
</code></pre>
<p>so mein ich das...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1817476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1817476</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 03 Dec 2009 23:27:54 GMT</pubDate></item></channel></rss>