<?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[using direktive fuer Klassenmember?]]></title><description><![CDATA[<p>Folgendes Scenario:</p>
<pre><code class="language-cpp">class UltraLangerKlassenNameDenIchNichtStaendigTippenWill {
public:
  enum Param{cA,cB,cC,cD};
  void DoSomething(Param p);
};

int main ()
{
  UltraLangerKlassenNameDenIchNichtStaendigTippenWill u;
  u.DoSomething(cA); //FEHLER
  u.DoSomething(UltraLangerKlassenNameDenIchNichtStaendigTippenWill::cA); //OK
}
</code></pre>
<p>Wie kann ich verhindern dass ich jedesmal das enum qualifizieren muss? Ich hasb mit <code>using UltraLangerKlassenNameDenIchNichtStaendigTippenWill::Param;</code> versucht, aber da meint der Compiler dass UltraLangerKlassenNameDenIchNichtStaendigTippenWill kein Namespace ist.<br />
Gibts ne Moeglichkeit ausser kuerzungs-typedefs, die Tipperei zu umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203400/using-direktive-fuer-klassenmember</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 12:11:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203400.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Jan 2008 13:19:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:19:18 GMT]]></title><description><![CDATA[<p>Folgendes Scenario:</p>
<pre><code class="language-cpp">class UltraLangerKlassenNameDenIchNichtStaendigTippenWill {
public:
  enum Param{cA,cB,cC,cD};
  void DoSomething(Param p);
};

int main ()
{
  UltraLangerKlassenNameDenIchNichtStaendigTippenWill u;
  u.DoSomething(cA); //FEHLER
  u.DoSomething(UltraLangerKlassenNameDenIchNichtStaendigTippenWill::cA); //OK
}
</code></pre>
<p>Wie kann ich verhindern dass ich jedesmal das enum qualifizieren muss? Ich hasb mit <code>using UltraLangerKlassenNameDenIchNichtStaendigTippenWill::Param;</code> versucht, aber da meint der Compiler dass UltraLangerKlassenNameDenIchNichtStaendigTippenWill kein Namespace ist.<br />
Gibts ne Moeglichkeit ausser kuerzungs-typedefs, die Tipperei zu umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441270</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:25:27 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Gibts ne Moeglichkeit ausser kuerzungs-typedefs, die Tipperei zu umgehen?</p>
</blockquote>
<p>Da fällt mir im Moment kein einfacher ein - obwohl: Du könntest einen Haufen enum-Werte in Konstanten packen, die du außerhalb deiner Klasse angelegt hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441274</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:26:40 GMT]]></title><description><![CDATA[<p><a href="http://u.cA" rel="nofollow">u.cA</a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441276</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:26:41 GMT]]></title><description><![CDATA[<p>eine möglichkeit ist es enum ausserhalb der Klasse zu definiren.<br />
die andere kürzere Klassennamen zu verwenden, und die Klasse in namespace's<br />
zu organisiren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441277</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:26:41 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:40:01 GMT]]></title><description><![CDATA[<p>Eine weitere möglichkeit wäre eine weitere Klasse zu definiren.</p>
<pre><code class="language-cpp">class kurz
{
public:
  enum Param{cA,cB,cC,cD};
};

class UltraLangerKlassenNameDenIchNichtStaendigTippenWill {
public:

  void DoSomething(kurz::Param p);
};

int main ()
{
  UltraLangerKlassenNameDenIchNichtStaendigTippenWill u;
  u.DoSomething(kurz::cA);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441291</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:51:56 GMT]]></title><description><![CDATA[<p>1. Warum hast du zu lange Klassennamen?<br />
2. Warum hast du keine Codecompletion? <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="😉"
    /><br />
3. Warum tust du Enums in Klassen? Weil du die Enums zuordnen willst? Macht das nicht schon der Enum-Kopf?????<br />
3.1. Wenn der Enum-Kopf nicht reicht, warum tust du nicht alles in einen Namespace? Auch wenn der lang ist, kann man den mit using kürzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441302</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:51:56 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:53:13 GMT]]></title><description><![CDATA[<p>Ramsis schrieb:</p>
<blockquote>
<p>Eine weitere möglichkeit wäre eine weitere Klasse zu definiren.</p>
</blockquote>
<p>Dann kann er auch gleich nen Namespace namens &quot;kurz&quot; definieren. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441304</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:56:02 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>3. Warum tust du Enums in Klassen? Weil du die Enums zuordnen willst? Macht das nicht schon der Enum-Kopf?????<br />
3.1. Wenn der Enum-Kopf nicht reicht, warum tust du nicht alles in einen Namespace? Auch wenn der lang ist, kann man den mit using kürzen.</p>
</blockquote>
<p>Was meinst du mit enum-Kopf? Und wie soll der hier weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441308</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 13:56:57 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p><a href="http://u.cA" rel="nofollow">u.cA</a>?</p>
</blockquote>
<p>Ist das nicht ausreichend?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441309</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 22 Jan 2008 13:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 14:18:15 GMT]]></title><description><![CDATA[<p>'typedef', nicht 'using':</p>
<pre><code class="language-cpp">typedef UltraLangerKlassenNameDenIchNichtStaendigTippenWill kurz;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441324</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 22 Jan 2008 14:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 14:20:25 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<p><a href="http://u.cA" rel="nofollow">u.cA</a>?</p>
</blockquote>
<p>Ist das nicht ausreichend?</p>
</blockquote>
<p>doch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441327</guid><dc:creator><![CDATA[fellhund]]></dc:creator><pubDate>Tue, 22 Jan 2008 14:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 14:20:43 GMT]]></title><description><![CDATA[<p>Er sagte doch bereits (erster Post) das er keine typedefs will. Zurück zu meiner Frage, warum geht <a href="http://u.cA" rel="nofollow">u.cA</a> nicht? Bzw. was ist daran auszusetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441328</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Tue, 22 Jan 2008 14:20:43 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 14:27:17 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Er sagte doch bereits (erster Post) das er keine typedefs will.</p>
</blockquote>
<p>Asche auf mein Haupt. Ich hatte es falsch verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441332</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 22 Jan 2008 14:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 15:07:17 GMT]]></title><description><![CDATA[<p>danke fuer die vielen Tips <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Das mit dem <a href="http://u.cA" rel="nofollow">u.cA</a> wusste ich nicht, war in etwa das was ich gesucht hab <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/1441352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441352</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 22 Jan 2008 15:07:17 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 15:30:01 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>:<br />
Nur ein Hinweis weil viele das nicht wissen: du kannst typedefs auch lokal in Funktionen verwenden:</p>
<pre><code class="language-cpp">class UltraLangerKlassenNameDenIchNichtStaendigTippenWill {
public:
  enum Param{cA,cB,cC,cD};
  void DoSomething(Param p);
};

int main ()
{
  typedef UltraLangerKlassenNameDenIchNichtStaendigTippenWill U;
  U u;
  u.DoSomething(U::cA);
}
</code></pre>
<p>Das ist IMO meist akzeptabel, da dadurch nicht der global-namespace mit typedefs vollgerotzt wird.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1463">@Artchi</a>:<br />
Enum Konstanten kann man leider nicht über den Namen des enums ansprechen, d.h. die sauen einem den Namespace voll in dem man sie definiert. Das ist meist unerwünscht, vor allem wenn das irgendwelche Optionen sind die dann einfach &quot;binary&quot; oder &quot;replace&quot; oder so heissen sollten.<br />
Hat man 2 gleiche Enums im gleichen Namespace die eine enum-Konstante namens &quot;binary&quot; definieren ... geht das schlicht und einfach nicht. Was eben doof ist.<br />
Daher steckt man enums oft in Klassen.<br />
Oft sogar in Dummy-Klassen die nix tun ausser einen Scope für den/die/das Enum bereitzustellen. Also ca. so:</p>
<pre><code class="language-cpp">struct FileFlags {
    enum Flags {
       open = 1,
       binary = 2,
       // ...
    };
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1441364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441364</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 22 Jan 2008 15:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to using direktive fuer Klassenmember? on Tue, 22 Jan 2008 17:00:15 GMT]]></title><description><![CDATA[<p>Danke hustbaer, das mit den typedefs in Funktionen wusste ich schon, das waere auch die naechste Alternative gewesen.<br />
Und auf Klassenexterne enums hab ich aus genau dem Grund verzichtet, den du angegeben hast. Ich hab mir leider noch nicht ganz angewoehnt, staendig namespaces zu verwenden, so dass meine Klassen im globalen Namensraum liegen, allerdings halte ich es fuer inakzeptabel, den auch noch mit enums a la {LEFT&lt; RIGHT TOP&lt; BOTTOM} etc. vollzukleistern, unter anderem wegen den von dir genannten Ueberschneidungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1441441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1441441</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 22 Jan 2008 17:00:15 GMT</pubDate></item></channel></rss>