<?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[C++: ofstream mehrfach definiert]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein kleines (Verständnis-?)Problem mit dem ofstream in C++.<br />
Ich habe ein Programm geschrieben, welches aus mehreren Einzeldateien besteht. In jeder dieser Datei will ich den ofstream verwenden (es soll immer in die gleiche datei geschrieben werden). Beim Erstellen bekomme ich dann die Fehlermeldung:</p>
<pre><code class="language-cpp">test.obj : error LNK2005: &quot;class std::basic_ofstream&lt;char,struct std::char_traits&lt;char&gt; &gt; fileout&quot; (?fileout@@3V?$basic_ofstream@DU?$char_traits@D@std@@@std@@A) ist bereits in main.obj definiert
fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
</code></pre>
<p>Anscheinend mache ich da irgendeinen Fehler, auf den ich nicht von selbst kommen will. Der ofstream &quot;fileout&quot; ist eigentlich nur in &quot;main.h&quot; definiert (welches über #ifndef durch mehrfaches Einbinden abgesichert ist), in test.cpp soll er dann in einer show-Funktion verwendet werden, ebenso in der main.cpp. (In welcher Datei muss denn dann der ofstream stehen? das passt bei mir anscheinend nicht).</p>
<p>Über Hilfe wäre ich sehr dankbar</p>
<p>Hier das Programm:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;Ctest.h&quot;

void main(void)
{
	cout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
	fileout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
}
</code></pre>
<p>main.h</p>
<pre><code class="language-cpp">#ifndef main_h
#define main_h

#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

	ofstream fileout(&quot;output.txt&quot;);

#endif
</code></pre>
<p>test.cpp</p>
<pre><code class="language-cpp">#include &quot;Ctest.h&quot;

ctest::ctest() {
out = 3;
}

ctest::~ctest() {}

void ctest::show() {
fileout &lt;&lt; out &lt;&lt; endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef test_h
#define test_h

#include &quot;main.h&quot;

class ctest {
private:
	int out;
public:
	ctest();
	~ctest();
	void show();
};

#endif
</code></pre>
<p>Vielen Dank! <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/topic/305251/c-ofstream-mehrfach-definiert</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 15:08:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305251.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Jun 2012 16:54:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++: ofstream mehrfach definiert on Sun, 24 Jun 2012 16:54:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe ein kleines (Verständnis-?)Problem mit dem ofstream in C++.<br />
Ich habe ein Programm geschrieben, welches aus mehreren Einzeldateien besteht. In jeder dieser Datei will ich den ofstream verwenden (es soll immer in die gleiche datei geschrieben werden). Beim Erstellen bekomme ich dann die Fehlermeldung:</p>
<pre><code class="language-cpp">test.obj : error LNK2005: &quot;class std::basic_ofstream&lt;char,struct std::char_traits&lt;char&gt; &gt; fileout&quot; (?fileout@@3V?$basic_ofstream@DU?$char_traits@D@std@@@std@@A) ist bereits in main.obj definiert
fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
</code></pre>
<p>Anscheinend mache ich da irgendeinen Fehler, auf den ich nicht von selbst kommen will. Der ofstream &quot;fileout&quot; ist eigentlich nur in &quot;main.h&quot; definiert (welches über #ifndef durch mehrfaches Einbinden abgesichert ist), in test.cpp soll er dann in einer show-Funktion verwendet werden, ebenso in der main.cpp. (In welcher Datei muss denn dann der ofstream stehen? das passt bei mir anscheinend nicht).</p>
<p>Über Hilfe wäre ich sehr dankbar</p>
<p>Hier das Programm:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;Ctest.h&quot;

void main(void)
{
	cout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
	fileout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
}
</code></pre>
<p>main.h</p>
<pre><code class="language-cpp">#ifndef main_h
#define main_h

#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

	ofstream fileout(&quot;output.txt&quot;);

#endif
</code></pre>
<p>test.cpp</p>
<pre><code class="language-cpp">#include &quot;Ctest.h&quot;

ctest::ctest() {
out = 3;
}

ctest::~ctest() {}

void ctest::show() {
fileout &lt;&lt; out &lt;&lt; endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef test_h
#define test_h

#include &quot;main.h&quot;

class ctest {
private:
	int out;
public:
	ctest();
	~ctest();
	void show();
};

#endif
</code></pre>
<p>Vielen Dank! <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/2226785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2226785</guid><dc:creator><![CDATA[filestream]]></dc:creator><pubDate>Sun, 24 Jun 2012 16:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to C++: ofstream mehrfach definiert on Sun, 24 Jun 2012 17:02:58 GMT]]></title><description><![CDATA[<p>Niemals Sachen mit externer Bindung in Headern definieren. Du suchst wahrscheinlich <code>extern</code> . Der Sinn eines globalen Streams ist natürlich trotzdem sehr sehr zweifelhaft.</p>
<p>using namespace in Headern ist auch Stiltodsünde, ebenso fehlende Includeguards.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2226789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2226789</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 24 Jun 2012 17:02:58 GMT</pubDate></item></channel></rss>