<?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[Klasse in Dateien aufteilen]]></title><description><![CDATA[<p>Ich bekomme bei meinem Code immer dieser Warnungen ausgegeben:</p>
<pre><code>[C++ Warnung] test.h(13): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
[C++ Warnung] test.h(13): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
[Linker Warnung] Public symbol '_test' defined in both module C:\DOKUMENTE UND EINSTELLUNGEN\ABC\DESKTOP\DBG\UNIT1.OBJ and C:\DOKUMENTE UND EINSTELLUNGEN\ABC\DESKTOP\DBG\TEST.OBJ
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;test.h&quot;
using namespace std;

int main()
{

test.Ausgabe();

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

void TestKlasse :: Ausgabe()
{
        std::cout&lt;&lt;&quot;test&quot;&lt;&lt;std::endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef testH
#define testH

#include &lt;iostream&gt;

class TestKlasse
{

public:
        void Ausgabe();
};

TestKlasse test;

#endif
</code></pre>
<p>Aber wenn ich schreibe:</p>
<p>test.cpp</p>
<pre><code class="language-cpp">#include &quot;test.h&quot;

TestKlasse test;
void TestKlasse :: Ausgabe()
{
        std::cout&lt;&lt;&quot;test&quot;&lt;&lt;std::endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef testH
#define testH

#include &lt;iostream&gt;

class TestKlasse
{

public:
        void Ausgabe();
};

extern TestKlasse test;

#endif
</code></pre>
<p>Dann sind diese Fehler weg ich hab aber gelesen das man den extern Befehl möglichst vermeiden sollte. Wie soll man das nun richtig machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307088/klasse-in-dateien-aufteilen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307088.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2012 10:10:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse in Dateien aufteilen on Thu, 16 Aug 2012 10:10:50 GMT]]></title><description><![CDATA[<p>Ich bekomme bei meinem Code immer dieser Warnungen ausgegeben:</p>
<pre><code>[C++ Warnung] test.h(13): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
[C++ Warnung] test.h(13): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
[Linker Warnung] Public symbol '_test' defined in both module C:\DOKUMENTE UND EINSTELLUNGEN\ABC\DESKTOP\DBG\UNIT1.OBJ and C:\DOKUMENTE UND EINSTELLUNGEN\ABC\DESKTOP\DBG\TEST.OBJ
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;test.h&quot;
using namespace std;

int main()
{

test.Ausgabe();

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

void TestKlasse :: Ausgabe()
{
        std::cout&lt;&lt;&quot;test&quot;&lt;&lt;std::endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef testH
#define testH

#include &lt;iostream&gt;

class TestKlasse
{

public:
        void Ausgabe();
};

TestKlasse test;

#endif
</code></pre>
<p>Aber wenn ich schreibe:</p>
<p>test.cpp</p>
<pre><code class="language-cpp">#include &quot;test.h&quot;

TestKlasse test;
void TestKlasse :: Ausgabe()
{
        std::cout&lt;&lt;&quot;test&quot;&lt;&lt;std::endl;
}
</code></pre>
<p>test.h</p>
<pre><code class="language-cpp">#ifndef testH
#define testH

#include &lt;iostream&gt;

class TestKlasse
{

public:
        void Ausgabe();
};

extern TestKlasse test;

#endif
</code></pre>
<p>Dann sind diese Fehler weg ich hab aber gelesen das man den extern Befehl möglichst vermeiden sollte. Wie soll man das nun richtig machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242366</guid><dc:creator><![CDATA[c*c]]></dc:creator><pubDate>Thu, 16 Aug 2012 10:10:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse in Dateien aufteilen on Thu, 16 Aug 2012 10:17:04 GMT]]></title><description><![CDATA[<p>warum willst du überhaupt schon an diesen Stellen deine Klasse instantieren? Üblicherweise macht man das doch erst zu einem späteren Zeitpunkt, z.B. hier in main(). Dann kannst du dir auch das extern sparen.</p>
<p>in testklasse.h sollte nur die Struktur der Klasse beschrieben werden, in testklasse.cpp dann die implementieren Methoden.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;test.h&quot;
using namespace std;

int main()
{
    Testklasse test;    
    test.Ausgabe();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242372</guid><dc:creator><![CDATA[Quisslich]]></dc:creator><pubDate>Thu, 16 Aug 2012 10:17:04 GMT</pubDate></item></channel></rss>