<?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[Problem mit Struktur]]></title><description><![CDATA[<p>Hallo ich habe folgende Dateien:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Strukturen.h&quot;
#include &quot;Klasse.h&quot;

using namespace std;

int main()
{

return 0;
}
</code></pre>
<p>Strukturen.h</p>
<pre><code class="language-cpp">#ifndef StrukturenH
#define StrukturenH

struct PERSON
{
        int Alter;

}person;

#endif
</code></pre>
<p>Klasse.h</p>
<pre><code class="language-cpp">#ifndef KlasseH
#define KlasseH

class Klasse
{
public:
       void Print();

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

void Klasse :: Print () 
{

}
</code></pre>
<p>Jetzt gibt mir der Compiler immer eine Warnung aus, er sagt Public Symbol _person defined in both module main.obj and Klasse.obj.</p>
<p>Wie macht man es richtig?</p>
<p>Ich wollte nicht extra in jeder Datei schreiben: PERSON person;<br />
Deswegen hatte ich mich für:</p>
<pre><code class="language-cpp">struct PERSON
{
        int Alter;

}person;
</code></pre>
<p>Entschieden da ich jetzt nur schreiben muss person.Alter=20; ansonsten müsste ich doch z.b. immer PERSON person; person.Alter=20; schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312372/problem-mit-struktur</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 23:45:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312372.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Jan 2013 10:27:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Struktur on Thu, 03 Jan 2013 10:27:39 GMT]]></title><description><![CDATA[<p>Hallo ich habe folgende Dateien:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Strukturen.h&quot;
#include &quot;Klasse.h&quot;

using namespace std;

int main()
{

return 0;
}
</code></pre>
<p>Strukturen.h</p>
<pre><code class="language-cpp">#ifndef StrukturenH
#define StrukturenH

struct PERSON
{
        int Alter;

}person;

#endif
</code></pre>
<p>Klasse.h</p>
<pre><code class="language-cpp">#ifndef KlasseH
#define KlasseH

class Klasse
{
public:
       void Print();

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

void Klasse :: Print () 
{

}
</code></pre>
<p>Jetzt gibt mir der Compiler immer eine Warnung aus, er sagt Public Symbol _person defined in both module main.obj and Klasse.obj.</p>
<p>Wie macht man es richtig?</p>
<p>Ich wollte nicht extra in jeder Datei schreiben: PERSON person;<br />
Deswegen hatte ich mich für:</p>
<pre><code class="language-cpp">struct PERSON
{
        int Alter;

}person;
</code></pre>
<p>Entschieden da ich jetzt nur schreiben muss person.Alter=20; ansonsten müsste ich doch z.b. immer PERSON person; person.Alter=20; schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2285595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2285595</guid><dc:creator><![CDATA[strU]]></dc:creator><pubDate>Thu, 03 Jan 2013 10:27:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Struktur on Thu, 03 Jan 2013 10:37:26 GMT]]></title><description><![CDATA[<p>Es gibt aber 2 Personen, eine in main.cpp und eine in Klasse.cpp</p>
<p>Richtig wäre</p>
<pre><code>//Strukturen.h
struct PERSON
{
        int Alter;

};
extern PERSON person;
//Strukturen.cpp
PERSON person;
</code></pre>
<p>Damit gibts person nur noch einmal im Programm.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2285605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2285605</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 03 Jan 2013 10:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Struktur on Thu, 03 Jan 2013 10:58:59 GMT]]></title><description><![CDATA[<blockquote>
<p>Jetzt gibt mir der Compiler immer eine Warnung aus, er sagt Public Symbol _person defined in both module main.obj and Klasse.obj</p>
</blockquote>
<p>Das er diesbezüglich eine Warnung ausgibt bezweifle ich stark.<br />
Ich denke eher, der Linker gibt dir einen Fehler.<br />
Du verletzt hier ein Grundlegendes Konzept von C++: Die <strong>ODR</strong>.</p>
<p>Um das zu lösen, <strong>deklarierst</strong> du <code>person</code> mit dem storage class specifier <code>extern</code> nur noch im Header und <strong>definierst</strong> es in einem Source, sowie mein Vorposter es schon gezeigt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2285618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2285618</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 03 Jan 2013 10:58:59 GMT</pubDate></item></channel></rss>