<?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[string und ofstream in header definieren]]></title><description><![CDATA[<p>Hallo zusammen!<br />
bin noch ziemlicher Anfänger in C++. Ich hab mal ein kleines Programm geschrieben und wollte es zum ausprobieren in main- und header-datei aufteilen. Der header sieht jetzt so aus:<br />
[code=&quot;cpp&quot;]<br />
#ifndef HEADER_H<br />
#define HEADER_H<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;string&gt;<br />
// anderer kram<br />
string laufzeit;<br />
bool beenden = false;<br />
ofstream ziel(&quot;laufzeit.txt&quot;);<br />
int rechner(float, int, int, int);<br />
#endif<br />
warum klappt das mit string und ofstream nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313493/string-und-ofstream-in-header-definieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 03:55:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313493.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Feb 2013 14:13:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:13:22 GMT]]></title><description><![CDATA[<p>Hallo zusammen!<br />
bin noch ziemlicher Anfänger in C++. Ich hab mal ein kleines Programm geschrieben und wollte es zum ausprobieren in main- und header-datei aufteilen. Der header sieht jetzt so aus:<br />
[code=&quot;cpp&quot;]<br />
#ifndef HEADER_H<br />
#define HEADER_H<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;string&gt;<br />
// anderer kram<br />
string laufzeit;<br />
bool beenden = false;<br />
ofstream ziel(&quot;laufzeit.txt&quot;);<br />
int rechner(float, int, int, int);<br />
#endif<br />
warum klappt das mit string und ofstream nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295381</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:13:22 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:24:06 GMT]]></title><description><![CDATA[<p>weil es in auch noch das Konzept der Namensräume gibt (suche mal nach &quot;namespace&quot;)</p>
<p>Einfach string ist an dieser Stelle unbekannt. &quot;std::string&quot; müsste es hier heissen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295386</guid><dc:creator><![CDATA[Quisslich]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:24:17 GMT]]></title><description><![CDATA[<p>std:: davor?<br />
Und extern.<br />
Klappt nicht ist übrigens eine gute Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295387</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:36:54 GMT]]></title><description><![CDATA[<p>wenn ich schreibe<br />
std:string;<br />
kommt bei mir:<br />
&quot;error: deklaration does not declare anything&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295389</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Thu, 12 Jun 2014 11:11:56 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295393</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 11:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:56:44 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@swordfish</a>: mein ich doch! ich habs im code auch mit :: geschrieben, aber trotzdem kommt dann eine fehlermeldung. wenn ich im header jetzt aber schreibe using namespace std;<br />
funktioniert es.</p>
<ol>
<li>warum?</li>
<li>wie funktioniert das mit den namespaces überhaupt? ich blick da nicht durch!</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2295395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295395</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 14:59:58 GMT]]></title><description><![CDATA[<p>ok, jetzt hab ich verstanden, wie ihr das meint. ich hatte std::string mit<br />
using std::string verwechselt und das alleine geschrieben. aber trotzdem versteh ich nicht, wofür ich diese namensräume brauche <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2295396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295396</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 14:59:58 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 15:06:29 GMT]]></title><description><![CDATA[<p>NIE USING NAMESPACE XY IM HEADER AUßER DU HAST EINEN SEEEEHR GUTEN GRUND!<br />
Zu den Namespaces:<br />
Früher in C hatte man einen Konflikt, wenn man etwas (Variable/Funktion/...) genau so nannte, wie eine bereits vorhandeen Variable/Funktion/... .<br />
Das lag daran, dass die Namen nicht gleich sein dürfen.<br />
In C++ gibt es einen einfachen Weg zur Vermeidung von solchen Konflikten: die Namespace.<br />
Eine Funktion foo im Namespace bar heißt nicht mehr foo, sondern bar::foo.<br />
Das heißt, dass du/ein anderer Programmierer im globalen Namespace (wenn du keinen verwendest) oder in einem anderen Namespace ebenfalls eine Funktion foo definieren können. Bsp:</p>
<pre><code>void foo(); In Ordnung, foo existiert nicht

int foo; // Fehler: foo ist bereits der Name der Funktion

namespace bar
{
    void foo(); // In Ordnung: innerhalb dieses Namespace existiert foo nicht

    int foo; // Fehler: In diesem Namespace existiert bereits foo
}

namespace bar2
{
    void foo(); // In Ordnung: innerhalb dieses Namespace existiert foo nicht
}

int main()
{
    foo(); // Foo aus dem globalen Namespace
    bar::foo(); // Foo aus bar
    bar2::foo(); // Foo aus bar2
}
</code></pre>
<p>Weil häufig keine Namenskonflikte entstehen, kann man mit using namespace bar; einen kompletten Neamespace &quot;einschalten&quot;, man muss dann nicht mehr bar::foo schreiben, sondern kann direkt foo verwenden.<br />
Das führt allerdings zu Fehlern, wenn (wie im Beispiel) ein Namenskonflikt auftritt.</p>
<p>Die Standardbilbiothek nutzt dieses Verfahren, indem sie alles in den namespace std gepackt hat.<br />
Entweder du schreibst vor jeder Funktion std:: oder nutzt using namespace std; um dir die Tipparbeit zu sparen (mache es trotzdem nicht!).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295399</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 01 Feb 2013 15:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Thu, 12 Jun 2014 11:12:00 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295401</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 11:12:00 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 15:15:01 GMT]]></title><description><![CDATA[<p>Dankeschön erstmal, soweit hab ich das jetzt verstanden. Heißt das also, dass z.B. cout im namespace std steht? das hab ich mich nämlich auch immer gefragt, wofür ich noch diesen namespace brauche, wenn cout doch schon durch<br />
#include &lt;iostream&gt;<br />
bekannt sein sollte. Ist das so richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295402</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 15:15:01 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 15:17:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8250">@swordfish</a>: hab ich doch schon vorher: &quot;deklaration does not declare anyting&quot;. aber ich werd mir merken, es ab jetzt SOFORT zu schreiben <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/2295405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295405</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 15:17:14 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 15:18:42 GMT]]></title><description><![CDATA[<p>Neulich gab es doch mal die Diskussion, was Informatiker eigentlich machen/warum alle ein falsches Bild haben. Ich meine gelesen zu haben, dass jemand geschrieben hat, dass die Leute in Zukunft Informatiker für Hacker halten werden, die jede Kaffeemaschine fernsteuern können.<br />
Das Bild ist jedenfalls falsch.<br />
Für die normalen Leute sind Informatiker welche, die hellsehen können/jeden Rechner pausenlos unter Beobachtung haben und ohne irgendwelche Infos den Fehler sagen können. <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>
<p>Edit: @TE: Ja, das ist richtig, mache mal Rechtsklick auf einen Std-Header, Header öffnen oder so (je nach IDE) und schaus dir selber an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295406</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 01 Feb 2013 15:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Fri, 01 Feb 2013 15:43:58 GMT]]></title><description><![CDATA[<p>ok, dankeschön</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295412</guid><dc:creator><![CDATA[MalteS]]></dc:creator><pubDate>Fri, 01 Feb 2013 15:43:58 GMT</pubDate></item><item><title><![CDATA[Reply to string und ofstream in header definieren on Sat, 02 Feb 2013 12:48:14 GMT]]></title><description><![CDATA[<p>MalteS schrieb:</p>
<blockquote>
<p>Der header sieht jetzt so aus:</p>
<pre><code>#ifndef HEADER_H
#define HEADER_H
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
// anderer kram
string laufzeit;
bool beenden = false;
ofstream ziel(&quot;laufzeit.txt&quot;);
int rechner(float, int, int, int);
#endif
</code></pre>
</blockquote>
<p>Lerne den Unterschied zwischen Deklaration und Definition. Dann lies im Buch deiner Wahl die One-Definition-Rule nach. Dann wirst du verstehen, dass das, was du hier vor hast, Käse ist.</p>
<pre><code>std::string laufzeit;
bool beenden = false;
std::ofstream ziel(&quot;laufzeit.txt&quot;);
</code></pre>
<p>Sind Definitionen, die in einem Header typischerweise nichts zu suchen haben. Möchtest du daraus Deklarationen machen, sieht das dann so aus:</p>
<pre><code>extern std::string laufzeit;
extern bool beenden;
extern std::ofstream ziel;
</code></pre>
<p>Aber am besten gewöhst du dir gleich ab, so viele globale Variablen zu nutzen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2295564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2295564</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 02 Feb 2013 12:48:14 GMT</pubDate></item></channel></rss>