<?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[Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps]]></title><description><![CDATA[<p>Hallo,<br />
also, ich habe für ein kleines Rollenspiel in der Konsole mehrere Dateien angelegt (hier natürlich vereinfacht;)):</p>
<pre><code class="language-cpp">//Spieler.h
#include &lt;iostream&gt;
#ifndef _SPIELER_H_
#define _SPIELER_H_
using namespace std;
class Spieler
{
private:
int Stufe = 10;
public:
int get_stufe();
};

Spieler* P = new Spieler; // &lt;- diese zeile macht mir sorgen, hab hier wohl einen fehler gemacht
</code></pre>
<pre><code class="language-cpp">//Spieler.cpp
include &lt;iostream&gt;
using namespace std;
int Spieler :: get_stufe(){return stufe;}
</code></pre>
<p>Ähnlich aufgebaut ist jetzt auch das Konstrukt für die Klasse Waffe.<br />
Nur darin gibts einen Quellcodeabschnitt in form von so etwas:</p>
<pre><code class="language-cpp">//iostream, und so
#include &quot;Spieler.h&quot;
using namespace std;
int Waffe :: Set_Schaden(){P-&gt;get_stufe() * 10;} // schaden soll also von der stufe abhängen
</code></pre>
<p>tja, und hier gibt mir der compiler eine fehlermneldung aus, er würde P nicht kennen.</p>
<p>Ich hoffe, ihr könnt mir helfen <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="😉"
    /></p>
<p>Gruß,<br />
Thracian</p>
<p>[edit] Achja, ne main.cpp samt main() hab ich auch noch, aber ich weiss nicht, ob die hier wichtig ist. in der hab ich alle .hs und .cpps includet und ein paar testfunktion implementiert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190209/fehler-bei-aufteilung-eines-projekts-in-mehrere-h-und-cpps</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 13:23:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190209.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Aug 2007 17:40:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps on Mon, 20 Aug 2007 17:41:25 GMT]]></title><description><![CDATA[<p>Hallo,<br />
also, ich habe für ein kleines Rollenspiel in der Konsole mehrere Dateien angelegt (hier natürlich vereinfacht;)):</p>
<pre><code class="language-cpp">//Spieler.h
#include &lt;iostream&gt;
#ifndef _SPIELER_H_
#define _SPIELER_H_
using namespace std;
class Spieler
{
private:
int Stufe = 10;
public:
int get_stufe();
};

Spieler* P = new Spieler; // &lt;- diese zeile macht mir sorgen, hab hier wohl einen fehler gemacht
</code></pre>
<pre><code class="language-cpp">//Spieler.cpp
include &lt;iostream&gt;
using namespace std;
int Spieler :: get_stufe(){return stufe;}
</code></pre>
<p>Ähnlich aufgebaut ist jetzt auch das Konstrukt für die Klasse Waffe.<br />
Nur darin gibts einen Quellcodeabschnitt in form von so etwas:</p>
<pre><code class="language-cpp">//iostream, und so
#include &quot;Spieler.h&quot;
using namespace std;
int Waffe :: Set_Schaden(){P-&gt;get_stufe() * 10;} // schaden soll also von der stufe abhängen
</code></pre>
<p>tja, und hier gibt mir der compiler eine fehlermneldung aus, er würde P nicht kennen.</p>
<p>Ich hoffe, ihr könnt mir helfen <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="😉"
    /></p>
<p>Gruß,<br />
Thracian</p>
<p>[edit] Achja, ne main.cpp samt main() hab ich auch noch, aber ich weiss nicht, ob die hier wichtig ist. in der hab ich alle .hs und .cpps includet und ein paar testfunktion implementiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348468</guid><dc:creator><![CDATA[Thracian]]></dc:creator><pubDate>Mon, 20 Aug 2007 17:41:25 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps on Mon, 20 Aug 2007 17:49:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Spieler* P = new Spieler;
</code></pre>
<p>Globale Variablen sind böse!</p>
<pre><code class="language-cpp">//Spieler.cpp
include &lt;iostream&gt;
using namespace std;
int Spieler :: get_stufe(){return stufe;}
</code></pre>
<p>Würde ich inlinen. Außerdem muss spieler.h includet werden.</p>
<blockquote>
<p>[edit] Achja, ne main.cpp samt main() hab ich auch noch, aber ich weiss nicht, ob die hier wichtig ist. in der hab ich alle .hs und .cpps includet und ein paar testfunktion implementiert</p>
</blockquote>
<p>.cpp Dateien includet man nicht, man kompiliert sie seperat und linkt dann alles zusammen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348473</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 20 Aug 2007 17:49:17 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps on Tue, 21 Aug 2007 09:05:08 GMT]]></title><description><![CDATA[<p>Danke erstmal,<br />
ich hab nur gemerkt, dass ich vergessen habe, zu schreiben welches problem ich überhaupt habe <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="😃"
    /> (die anderen Fehler sind wohl durch das Kürzen des Quelltextes entstanden)</p>
<p>Also:<br />
Ich habe ja zwei verschiedene .h und .cpps: einmal die für Spieler und einmal die für Waffe. Nun soll die Klasse Waffe allerdings eine Methode enthalten, in der Sie auf die Funktion Spieler :: Get_Stufe(); zugreift. Will heissen: Ohne ein Objekt Spieler P wird die Klasse fehlerhaft kompiliert.<br />
Ich will nun einen Pointer</p>
<pre><code class="language-cpp">Spieler *P = new Spieler;
</code></pre>
<p>nutzen und dannach verschiedene Objekte der Klasse Waffe instanzieren, die dann korrekterweise auf die Stufe des Objekts Spieler zugreifen, der sie angelegt hat.<br />
Mein Problem also: wie erkläre ich der Klasse Waffe, dass sie sich auf einen Spieler beziehen soll, der zum Zeitpunkt des kompilierens noch gar nicht existiert, bzw. in einer anderen .cpp/ .h Datei instanziert wurde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348773</guid><dc:creator><![CDATA[Thracian]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps on Tue, 21 Aug 2007 09:12:11 GMT]]></title><description><![CDATA[<p>Die primitivste Lösung ist es, den Spieler als 'extern'-Variable zu deklarieren (damit sagst du dem Compiler, daß es die Variable gibt, sie aber woanders existiert).</p>
<p>Besser ist es imho, wenn die Waffe selber weiß, welchem Spieler sie gehört:</p>
<pre><code class="language-cpp">//waffe.h
class Spieler;

class Waffe
{
public:
  Waffe(Spieler* b = NULL):besitzer(b){}
  void setze_Besitzer(Spieler* b)
  { besitzer=b; }

  int schieße();
  ...
private:
  Spieler* besitzer;
};

//waffe.cpp
#include &quot;Waffe.h&quot;
#include &quot;Spieler.h&quot;

int Waffe::schieße()
{
  int stufe = besitzer-&gt;Get_Stufe();
  ...
}
</code></pre>
<pre><code class="language-cpp">//spieler.h
class Waffe;

class Spieler
{
public:
  void setze_Waffe(Waffe* w);//ruft wieder w-&gt;setze_besitzer()
  int Get_Stufe();
...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1348782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348782</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei Aufteilung eines Projekts in mehrere .h und .cpps on Tue, 21 Aug 2007 09:15:47 GMT]]></title><description><![CDATA[<p>Klasse ;), vielen Dank, probier ich gleich mal aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348784</guid><dc:creator><![CDATA[Thracian]]></dc:creator><pubDate>Tue, 21 Aug 2007 09:15:47 GMT</pubDate></item></channel></rss>