<?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[Hab ein fehler]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std; 
using std::cout; 
using std::endl; 

void wait () 
{ 
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
} 

int main();
{
    float x = 123.456F    
          y = 76.543F
          summe;

    summe = x + y;

    cout &lt;&lt; &quot;Summe:    &quot;
         &lt;&lt; x &lt;&lt; &quot; + &quot; &lt;&lt; y &lt;&lt; &quot; = &quot; &lt;&lt; summe &lt;&lt;endl;

    cout &lt;&lt; &quot;Differenz: &quot;
         &lt;&lt; x &lt;&lt; &quot; - &quot; &lt;&lt;  y &lt;&lt; &quot; = &quot; &lt;&lt; (x - y) &lt;&lt; endl;

    wait();
    return 0;
}
</code></pre>
<p>14 expected unqualified-id before '{' token<br />
14 expected <code>,' or</code>;' before '{' token</p>
<p>Die andren fehler hab ich alle weg bekommen außer die.Könnt ihr mir vlt helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187077/hab-ein-fehler</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 14:24:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187077.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Jul 2007 15:07:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 15:08:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std; 
using std::cout; 
using std::endl; 

void wait () 
{ 
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
} 

int main();
{
    float x = 123.456F    
          y = 76.543F
          summe;

    summe = x + y;

    cout &lt;&lt; &quot;Summe:    &quot;
         &lt;&lt; x &lt;&lt; &quot; + &quot; &lt;&lt; y &lt;&lt; &quot; = &quot; &lt;&lt; summe &lt;&lt;endl;

    cout &lt;&lt; &quot;Differenz: &quot;
         &lt;&lt; x &lt;&lt; &quot; - &quot; &lt;&lt;  y &lt;&lt; &quot; = &quot; &lt;&lt; (x - y) &lt;&lt; endl;

    wait();
    return 0;
}
</code></pre>
<p>14 expected unqualified-id before '{' token<br />
14 expected <code>,' or</code>;' before '{' token</p>
<p>Die andren fehler hab ich alle weg bekommen außer die.Könnt ihr mir vlt helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325938</guid><dc:creator><![CDATA[Chenoa]]></dc:creator><pubDate>Sun, 15 Jul 2007 15:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 15:11:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">float x = 123.456F,    
          y = 76.543F,
          summe;
</code></pre>
<p>zwei kommata vergessen</p>
<p>und hinter main ein semikolon zuviel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325940</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sun, 15 Jul 2007 15:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 15:16:58 GMT]]></title><description><![CDATA[<p>Ok stimmt fehler sind weg danke dir</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325941</guid><dc:creator><![CDATA[Chenoa]]></dc:creator><pubDate>Sun, 15 Jul 2007 15:16:58 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 16:56:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
    float x = 123.456f;    
    float y = 76.543f;

    std::cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; &quot;\ny = &quot; &lt;&lt; y;  
    std::cout &lt;&lt; &quot;\nx + y = &quot; &lt;&lt; x + y;
    std::cout &lt;&lt; &quot;\nx - y = &quot; &lt;&lt; x - y &lt;&lt; std::endl;

    std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
    std::cin.get();
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325948</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 15 Jul 2007 16:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 16:06:56 GMT]]></title><description><![CDATA[<p>aber seit wann komt nach</p>
<pre><code class="language-cpp">int main() ;
</code></pre>
<p>das semikolon hin??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325972</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 15 Jul 2007 16:06:56 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 16:12:47 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>aber seit wann komt nach</p>
<pre><code class="language-cpp">int main() ;
</code></pre>
<p>das semikolon hin??</p>
</blockquote>
<p>Seit 17:20:49 15.07.2007, invented by The Evil <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>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325976</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 15 Jul 2007 16:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 16:16:14 GMT]]></title><description><![CDATA[<p>nee falsch geguckt <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="😃"
    /> das hat der autor schon in seinem code falsch geschrieben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325978</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 15 Jul 2007 16:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 16:25:32 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">using namespace std; 
using std::cout; 
using std::endl;
</code></pre>
<p>Wow das ist mal was <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="😃"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> für die Letzten 2 <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="😉"
    /> aber wozu das using namespace? Ist generell eine schlechte Idee und du greifst nicht darauf zurück</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325980</guid><dc:creator><![CDATA[darthdespotism]]></dc:creator><pubDate>Sun, 15 Jul 2007 16:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 17:24:21 GMT]]></title><description><![CDATA[<p>darthdespotism schrieb:</p>
<blockquote>
<p>aber wozu das using namespace? Ist generell eine schlechte Idee</p>
</blockquote>
<p>Ist das irgendwie dein Steckenpferd? Nenn doch bitte mal einen technischen Grund, warum eine using-Direktive *nach* allen Includes innerhalb einer *Source*-Datei eine schlechte Idee ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326012</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 15 Jul 2007 17:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 17:49:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/110">@HumeSikkins</a>: Guck mal nen paar Threads weiter oben<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16437">@Chenoa</a>: Pack oben noch #include &lt;limits&gt; rein, wenn du meinen Code nutzt. Hab ich vergessen gehabt. Sry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326025</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 15 Jul 2007 17:49:57 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 19:20:08 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/110">@HumeSikkins</a>: Guck mal nen paar Threads weiter oben</p>
</blockquote>
<p>würde die erklärung auch gerne hören und alle threads im c++ forum durchsuchen ist mir jetzt etwas zuviel :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326087</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 15 Jul 2007 19:20:08 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 19:23:39 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>darthdespotism schrieb:</p>
<blockquote>
<p>aber wozu das using namespace? Ist generell eine schlechte Idee</p>
</blockquote>
<p>Ist das irgendwie dein Steckenpferd? Nenn doch bitte mal einen technischen Grund, warum eine using-Direktive *nach* allen Includes innerhalb einer *Source*-Datei eine schlechte Idee ist.</p>
</blockquote>
<p>Nehmen wir an du hast zwei tolle Klassen: std::string und gott::string. Jetzt machst du</p>
<pre><code class="language-cpp">using namespace std;
using namespace gott;

string x; // KABOOM
</code></pre>
<p>Um sowas zu vermeiden und um konsistent zu bleiben nutze ich zumindest (fast) nie &quot;using namespace&quot;.</p>
<p>Ob dir das technisch genug ist, ist mir allerdings egal. <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/1326091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326091</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Sun, 15 Jul 2007 19:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 19:40:38 GMT]]></title><description><![CDATA[<p>darthdespotism schrieb:</p>
<blockquote>
<pre><code class="language-cpp">using namespace std; 
using std::cout; 
using std::endl;
</code></pre>
<p>Wow das ist mal was <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="😃"
    /></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> für die Letzten 2 <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="😉"
    /> aber wozu das using namespace? Ist generell eine schlechte Idee und du greifst nicht darauf zurück</p>
</blockquote>
<p>Ich mache nur das was in mein Buch steht(Meine jetzt mir using namespace std;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326104</guid><dc:creator><![CDATA[Chenoa]]></dc:creator><pubDate>Sun, 15 Jul 2007 19:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 20:41:33 GMT]]></title><description><![CDATA[<p>Mr. N schrieb:</p>
<blockquote>
<p>Nehmen wir an du hast zwei tolle Klassen: std::string und gott::string. Jetzt machst du</p>
<pre><code class="language-cpp">using namespace std;
using namespace gott;

string x; // KABOOM
</code></pre>
<p>Um sowas zu vermeiden und um konsistent zu bleiben nutze ich zumindest (fast) nie &quot;using namespace&quot;.</p>
<p>Ob dir das technisch genug ist, ist mir allerdings egal. <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 ist jedenfalls nicht *Grund* genug. Das ist nämlich einfach nur Quatsch. In solch einem Fall verwendet man dann halt Aliase oder gibt den Namensbereich explizit an, indem man den Bezeichner voll qualifiziert. Ich sehe hier keinen Grund, 'using'-Direktiven generell zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326143</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 15 Jul 2007 20:41:33 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 20:46:34 GMT]]></title><description><![CDATA[<p>ich benutze sehr sehr selten 2 verschiedene arten von strings. oder generell 2 verschiedene arten von irgendwas.</p>
<p>die probleme die man mit 2 gleichen namen hat, ist übrigens nicht durch ein using namespace zu lösen. denn ist string nun xxx::string oder yyy::string. das ist viel wichtiger und schwergewichter als der compiler fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326148</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 15 Jul 2007 20:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 20:50:46 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>ich benutze sehr sehr selten 2 verschiedene arten von strings. oder generell 2 verschiedene arten von irgendwas.</p>
</blockquote>
<p>Hmm. Jein. Genau das ist ja der Sinn von Namensbereichen: Solche Konflikte zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326151</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 15 Jul 2007 20:50:46 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 20:52:15 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>ich benutze sehr sehr selten 2 verschiedene arten von strings. oder generell 2 verschiedene arten von irgendwas.</p>
<p>die probleme die man mit 2 gleichen namen hat, ist übrigens nicht durch ein using namespace zu lösen. denn ist string nun xxx::string oder yyy::string. das ist viel wichtiger und schwergewichter als der compiler fehler.</p>
</blockquote>
<p>Dann nimm halt immer den globalen Namespace. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326153</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Sun, 15 Jul 2007 20:52:15 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Sun, 15 Jul 2007 22:36:24 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>ich benutze sehr sehr selten 2 verschiedene arten von strings. oder generell 2 verschiedene arten von irgendwas.</p>
</blockquote>
<p>Hmm. Jein. Genau das ist ja der Sinn von Namensbereichen: Solche Konflikte zu vermeiden.</p>
</blockquote>
<p>Du hast es nicht verstanden. Das Problem ist:</p>
<p>string s;</p>
<p>ist das jetzt xxx::string oder yyy::string?<br />
ob ich hier using namespace xxx; oder using xxx::string; schreibe ist dabei vollkommen egal. sobald ich 2 gleiche sachen in einem projekt habe, habe ich ein problem.</p>
<p>ich kann also sorglos using namespace std; schreiben. denn ob ich es schreibe oder nicht, ich verwirre die leute mit 2 strings so oder so. und muss dann einen string immer mit namespace schreiben wenn nicht sogar beide.</p>
<p>wie dem auch sei, ich bin teufels küche.</p>
<p>compiler fehler sind hierbei das geringste übel: viel größer sind die logischen probleme für den programmierer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326195</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 15 Jul 2007 22:36:24 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 00:00:51 GMT]]></title><description><![CDATA[<p>Mr. N schrieb:</p>
<blockquote>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>darthdespotism schrieb:</p>
<blockquote>
<p>aber wozu das using namespace? Ist generell eine schlechte Idee</p>
</blockquote>
<p>Ist das irgendwie dein Steckenpferd? Nenn doch bitte mal einen technischen Grund, warum eine using-Direktive *nach* allen Includes innerhalb einer *Source*-Datei eine schlechte Idee ist.</p>
</blockquote>
<p>Nehmen wir an du hast zwei tolle Klassen: std::string und gott::string. Jetzt machst du</p>
<pre><code class="language-cpp">using namespace std;
using namespace gott;

string x; // KABOOM
</code></pre>
<p>Um sowas zu vermeiden und um konsistent zu bleiben nutze ich zumindest (fast) nie &quot;using namespace&quot;.</p>
<p>Ob dir das technisch genug ist, ist mir allerdings egal. <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>Also erstmal ist das KABOOM völliger blödsinn, da es suggeriert, dass etwas schlimmes passiert. Eine Compile-Zeit-Fehler, der durch den Compiler mit Name und Adresse gemeldet wird ist aber wahrlich nichts schlimmes, gehört bei einer statisch getypten Sprache wie C++ vielmehr zum Alltag. Mit KABOOM sollte man Sachen bezeichnen, die zu einem Unglück führen und die nicht vom Compiler entdeckt werden (müssen). Wie z.B. undefiniertes Verhalten.</p>
<p>Als nächstes:<br />
Nehmen wir dein Beispiel:<br />
A) Ohne Using-Direktiven und using-Deklaration:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;gott&gt;

void alles_noch_gut() {
  std::string question = &quot;May I have your attention, please?&quot;
  Gott::getInstance().askGott(question);
  ...
}

void spaet_in_der_nacht() {
  string question = &quot;Why do I have to work at night?&quot;; // Compile-Zeit-Fehler
}
</code></pre>
<p>Du (oder der nächste Programmierer) vergisst die Namespace-Qualifikation. Ergebnis: Compile-Zeit-Fehler. Unbekannter Typ.<br />
Fix: Qualifizieren<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> Mit Using-Deklaration:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;gott&gt;
using gott::string;
....

// spaet in der nacht
using std::string;
</code></pre>
<p>Du (oder der nächste Programmierer) fügt eine zweite (inkompatible) using-Deklaration hinzu: Ergebnis: Compile-Zeit-Fehler. Name bereits deklariert.<br />
Fix: Qualifizieren<br />
C) Mit Using-Direktive:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;gott&gt;
using namespace gott;
using namespace string;

void alles_noch_gut() {
  std::string question = &quot;May I have your attention, please?&quot;
  Gott::getInstance().askGott(question);
  ...
}
void spaet_in_der_nacht() {
  string question = &quot;Why do I have to work at night?&quot;; // Compile-Zeit-Fehler
}
</code></pre>
<p>Du (oder der nächste Programmierer) verwendest einen Namen, der durch eine using-Direktive mehrdeutig geworden ist. Ergebnis: Compile-Zeit-Fehler. Name ist mehrdeutig.<br />
Fix: Qualifizieren</p>
<p>Wie man sieht: Die Fehler sind nahezu identisch und alle werden vom Compiler bemängelt. Der Fix ist immer der selbe. Technisch gibt es *keinen* Unterschied (immer unter der Annahme, dass wir *nach* allen includes und in Source-Datei sind). Die Fehler sind immer lokal und einmal gefixed ist die Semantik in allen Fällen die Gleiche. Der Unterschied besteht lediglich darin, wann der Fehler auftritt und wann die Arbeit investiert werden muss.<br />
Im Computerdeutsch könnte man den Immer-Qualifizierer als eager bezeichnen. Den using-Direktiven-Mensch als lazy.<br />
Wer hier von einer Stilverletzung spricht, verwechselt in meinen Augen Stil mit Geschmack.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326217</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 16 Jul 2007 00:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 00:36:17 GMT]]></title><description><![CDATA[<p>Die Gefahr, dass man zwei inkompatible using-Direktiven setzt ist doch wesentlich geringer als die Gefahr, inkompatible using namespace-Direktiven zu setzen. Das ist natürlich subjektiv.</p>
<p>Ich nutze using allerdings grundsätzlich wesentlich weniger als früher. Schreibe also jedes mal std::cout und std::string. Stört ja auch nicht wirklich. <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/1326226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326226</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Mon, 16 Jul 2007 00:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 01:45:42 GMT]]></title><description><![CDATA[<p>Worum es aber geht ist, es schadet dir nicht using namespace std; in einer implementierungsdatei zu schreiben. es ist nicht der einzige weg, aber es ist auch nicht ein falscher weg.</p>
<p>wenn man gerne viel :: schreibt, kann man komplett ohne using auskommen. wenn man lieber weniger schreibt oder leichtes lesen bevorzugt wird man lieber zu usings verfallen.</p>
<p>problem ist halt bei der lesbarkeit dass std:: null information für den leser sind...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326227</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 16 Jul 2007 01:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 05:34:50 GMT]]></title><description><![CDATA[<p>es gibt keine &quot;gefahr&quot; bei verwendung von using namespace. fehler, die der compiler nicht entdeckt stellen eine gefahr da. fehler, die der compiler immer findet und auch ausschmeisst sind keine gefahr. was sich nicht kompilieren lässt, kann auch nicht gefährlich sein <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>using declarations können unschön sein, weil sie u.u. mehrarbeit verursachen und es deshalb sinnvoll ist, sie sparsam einzusetzen. zumindest nicht in header-dateien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326244</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 16 Jul 2007 05:34:50 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 06:10:07 GMT]]></title><description><![CDATA[<p>Vor ner ganzen weile wurde hier in nem ähnlichen Thema von jemandem sehr gut begründet, dass using std::string unter umständen schlimmer sein kann, als using namespace std...aber ich erinner mich nicht mehr an die begründung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Vielleicht liest derjenige das nochmal und verweist auf den thread.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326255</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 06:45:39 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Du hast es nicht verstanden. Das Problem ist:</p>
<p>string s;</p>
<p>ist das jetzt xxx::string oder yyy::string?<br />
ob ich hier using namespace xxx; oder using xxx::string; schreibe ist dabei vollkommen egal. sobald ich 2 gleiche sachen in einem projekt habe, habe ich ein problem. […]</p>
<p>compiler fehler sind hierbei das geringste übel: viel größer sind die logischen probleme für den programmierer</p>
</blockquote>
<p>Nicht unbedingt. Zufälligerweise habe ich vor kurzem an einem Projekt mitgearbeitet, wo genau dies der Fall ist. Die Bibliothek ist ein Toolsatz für Bioinformatiker, und hier braucht man nunmal unterschiedliche Stringtypen. Unter anderem hat die Bibliothek eben auch eine Klasse libname::string&lt;&gt; definiert ('std::basic_string' wäre hier übrigens keine Alternative gewesen). Und schon hast Du Deinen Konflikt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326266</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 16 Jul 2007 06:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 09:04:07 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>Vor ner ganzen weile wurde hier in nem ähnlichen Thema von jemandem sehr gut begründet, dass using std::string unter umständen schlimmer sein kann, als using namespace std...aber ich erinner mich nicht mehr an die begründung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Die ausführliche Begründung findest du in Sutters &quot;More Exceptional C++&quot; und das Ganze stimmt für usings in Headern. Ganz kurz: was eine using-Deklaration bedeutet hängt vom Kontext ab, in dem sie steht. Da es sich um eine (weitere) Deklaration handelt, werden nur solche Namen berücksichtigt, die bereits deklariert sind. Da Namespaces nun aber offen und gerne mal über mehrere Header verteilt sind, ist die genaue Bedeutung einer using-Deklaration in einem Header von der Reihenfolge abhängig, in der verschiedene Header am Ende inkludiert werden. Das ist nicht nur unangenehm, es kann auch schnell zu einer Verletzung der ODR (gerne mal bei inline-Funktionen) und damit zu undefiniertem Verhalten führen.</p>
<p>Eine using-Direktive hingegen, ist nicht ganz so dramatisch, da sie alle Namen verfügbar macht. Unabhängig davon ob selbige vor oder nach der using-Direktive deklariert werden. In diesem Punkt ist eine using-Direktive also Reihenfolgeunabhängig.<br />
Trotzdem gehören sie nicht in Header (oder vor irgendwelche includes): Zum einen ist es unhöflich jedem alle Namen eines Namespaces aufzuzweingen und zum anderen kann es die Bedeutung von anderen Headern ändern, die ohne using im Hinterkopf geschrieben wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326364</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 16 Jul 2007 09:04:07 GMT</pubDate></item><item><title><![CDATA[Reply to Hab ein fehler on Mon, 16 Jul 2007 10:19:08 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>problem ist halt bei der lesbarkeit dass std:: null information für den leser sind...</p>
</blockquote>
<p>Wenn ich lese std::string, dann ist 100% und ohne Zweifel klar, was das ist. Bei &quot;string&quot; ist das weniger klar. Außerdem sind ellenlange using-Leisten unschön. (Und die entstehen selbst wenn man &quot;using namespace&quot; benutzt unter Umständen.)</p>
<p>Das Beispiel mit std::string und gott::string war übrigens nicht aus der Luft gegriffen. Aber jetzt ist GOTT ja eh mehr oder weniger &quot;beendet&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1326416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1326416</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Mon, 16 Jul 2007 10:19:08 GMT</pubDate></item></channel></rss>