<?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[Klassenhierarchie und Interoperation]]></title><description><![CDATA[<p>Hallo.</p>
<p>Um mein Programm etwas übersichtlicher zu gestalten, habe ich mir gedacht eine kleine Klassenhierarchie einzubauen. Dazu wollte ich 3 Funktionsklassen anlegen, die aber alle miteinander operieren müssen. Das heißt, ich muss sowohl innerhalb der Klasse A auf die Klasse B zugreifen können und umgekehrt.</p>
<p>Nach ein paar Stunden googeln habe ich dann schließlich aufgegeben.</p>
<p>Der Code sieht folgendermaßen aus (Ausschnitt der nicht funktioniert):</p>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;user.cpp&quot;

int main(void)
{
	classUser::addUser(std::string(&quot;Ich&quot;));
}
</code></pre>
<p><strong>user.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;string&gt;

class classUser
{
	public :
		static std::string aktuellerUser;
		static void addUser(std::string strUser)
		{
			aktuellerUser = strUser;
		}

};
</code></pre>
<p>Ich weiß nicht wieso, aber Microsoft Visual Studio schaffst bei mir den Code zu kompilieren, aber das genügt mir nicht, der <strong>gcc/g++</strong> soll es auch können <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>Das ist meine Fehlermeldung:</p>
<blockquote>
<p>g++ ./main.cpp</p>
<p>/tmp/ccBhS5v1.o: In function <code>classUser::addUser(std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)': main.cpp:(.text.\_ZN9classUser7addUserESs\[classUser::addUser(std::basic\_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)\]+0x10): undefined reference to</code>classUser::aktuellerUser'<br />
collect2: ld returned 1 exit status</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/186748/klassenhierarchie-und-interoperation</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:55:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186748.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Jul 2007 00:54:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenhierarchie und Interoperation on Thu, 12 Jul 2007 00:55:21 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Um mein Programm etwas übersichtlicher zu gestalten, habe ich mir gedacht eine kleine Klassenhierarchie einzubauen. Dazu wollte ich 3 Funktionsklassen anlegen, die aber alle miteinander operieren müssen. Das heißt, ich muss sowohl innerhalb der Klasse A auf die Klasse B zugreifen können und umgekehrt.</p>
<p>Nach ein paar Stunden googeln habe ich dann schließlich aufgegeben.</p>
<p>Der Code sieht folgendermaßen aus (Ausschnitt der nicht funktioniert):</p>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;user.cpp&quot;

int main(void)
{
	classUser::addUser(std::string(&quot;Ich&quot;));
}
</code></pre>
<p><strong>user.cpp</strong></p>
<pre><code class="language-cpp">#include &lt;string&gt;

class classUser
{
	public :
		static std::string aktuellerUser;
		static void addUser(std::string strUser)
		{
			aktuellerUser = strUser;
		}

};
</code></pre>
<p>Ich weiß nicht wieso, aber Microsoft Visual Studio schaffst bei mir den Code zu kompilieren, aber das genügt mir nicht, der <strong>gcc/g++</strong> soll es auch können <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>Das ist meine Fehlermeldung:</p>
<blockquote>
<p>g++ ./main.cpp</p>
<p>/tmp/ccBhS5v1.o: In function <code>classUser::addUser(std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)': main.cpp:(.text.\_ZN9classUser7addUserESs\[classUser::addUser(std::basic\_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;)\]+0x10): undefined reference to</code>classUser::aktuellerUser'<br />
collect2: ld returned 1 exit status</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1323485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323485</guid><dc:creator><![CDATA[Chrono007]]></dc:creator><pubDate>Thu, 12 Jul 2007 00:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenhierarchie und Interoperation on Thu, 12 Jul 2007 01:28:51 GMT]]></title><description><![CDATA[<p>g++ main.cpp user.cpp</p>
<p>musst ihm ja auch sagen dass er user.cpp mitkompilieren soll. kann er ja nicht riechen welche dateien du alle kompilieren willst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323490</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 12 Jul 2007 01:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenhierarchie und Interoperation on Thu, 12 Jul 2007 08:25:59 GMT]]></title><description><![CDATA[<p>Vor allem fehlt dort die Definition der statischen Variable (die Nennung in der Klassendefinition ist nur eine Deklaration). Und es deutet immer auf (potentielle) Probleme hin, wenn du CPP-Files inkluden mußt oder willst. Besser sieht es so aus:</p>
<pre><code class="language-cpp">//main.cpp
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &quot;user.h&quot;

int main(void)
{
    classUser::addUser(std::string(&quot;Ich&quot;));
}
</code></pre>
<pre><code class="language-cpp">//user.h
#include &lt;string&gt;

class classUser
{
public :
    static std::string aktuellerUser;
    static void addUser(std::string strUser);
};
</code></pre>
<pre><code class="language-cpp">//user.cpp
#include &quot;user.h&quot;

std::string user::aktuellerUser;//da hast du die benötigte Definition der statischen Variable

void user::addUser(std::string strUser)
{
    aktuellerUser = strUser;
}
</code></pre>
<p>(PS: Was hat die Frage denn mit Klassenhierarchien zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1323619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323619</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 12 Jul 2007 08:25:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenhierarchie und Interoperation on Thu, 12 Jul 2007 14:44:38 GMT]]></title><description><![CDATA[<p>Funktioniert <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="😉"
    /> ... Danke, das mit den Header Dateien ist ne gute Sache, sonst hatte ich immer das Problem, dass ich nie wusste, welche Datei ich zu erst inkludieren sollte, weil beide voneinander abhingen.</p>
<p>Für meine &quot;Nachwelt&quot; (dort hat sich nen kleiner Tippfehler eingeschlichen)...</p>
<pre><code class="language-cpp">//user.cpp
#include &quot;user.h&quot;

std::string classUser::aktuellerUser;//da hast du die benötigte Definition der statischen Variable

void classUser::addUser(std::string strUser)
{
    aktuellerUser = strUser;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1323957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1323957</guid><dc:creator><![CDATA[Chrono007]]></dc:creator><pubDate>Thu, 12 Jul 2007 14:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenhierarchie und Interoperation on Fri, 13 Jul 2007 06:15:04 GMT]]></title><description><![CDATA[<p>Chrono007 schrieb:</p>
<blockquote>
<p>(dort hat sich nen kleiner Tippfehler eingeschlichen)</p>
</blockquote>
<p>Das war kein Tippfehler, das war Absicht <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="😃"
    /> (behaupte ich jetzt mal)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1324274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1324274</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Jul 2007 06:15:04 GMT</pubDate></item></channel></rss>