<?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[Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier ein kleines Anfänger-Problem, bei dem ich mit meinem Wissen, was ich habe, nicht weiter komme.<br />
Ich programmiere einen ziemlich primitiven Vorläufer eines RPG-Spiels, um ein wenig zu üben.</p>
<p><strong>Programmbeschreibung</strong> (kann natürlich auch einfach im Quelltext nachvollzogen werden):</p>
<p>Ich bin dabei so vorgegangen, dass ich so tue, als wären den einzelnen Feldern, die man anklickt, um den Spieler zu bewegen, Zustände (Zahlen) zugeordnet. Ist eine von diesen die Zahl 2 zugeordnet (&quot;ENEMY&quot;), so soll der Spieler angreifen (wird durch eine Textnachricht simuliert). Jetzt muss natürlich ermittelt werden, wer gewinnt! Daher wollte ich mir eine Funktion &quot;calcBalance&quot; programmieren, welche die relevanten Werte vom Spieler und Gegner übergeben bekommt, bzw. auf sie zugreifen kann, und die Dmg-rate dann ausgibt.</p>
<p><strong>Problembeschreibung</strong>:</p>
<p>Mein Problem ist, dass ich die Funktion &quot;calcBalance&quot; beispielsweise mit dem Objekt Spieler aufrufe, was dazu führt, dass sie nur auf die Werte des Spielers zugreifen kann, nicht aber auf die des bzw. eines speziellen Gegners.</p>
<p>Es wäre nett, wenn ihr mir zeigt, wie ich das ändern kann. In C++ gab es bis jetzt für alles eine einfache Lösung <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>
<p>Hier der relevante Code:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

enum MAPTYPES
{
	NEUTRAL,
	NPC,
	ENEMY,
	UNACCESSABLE,
};

class Cliving 
{
protected:
	int m_attack;
	int m_defence;
	int m_life;

public:
	void move(int location);
	void calcBalance();
};

class Cplayer : public Cliving
{
public:
	Cplayer();
};

class Cenemy : public Cliving
{
public:
	Cenemy();
};

Cplayer::Cplayer()
{
	m_attack = 90;
	m_defence = 30;
	m_life = 100;
}

Cenemy::Cenemy()
{
	m_attack = 30;
	m_defence = 30;
	m_life = 100;
}

void Cliving::move(int location)
{
	if(location == ENEMY) cout &lt;&lt; &quot;player attacks enemy&quot;;
	calcBalance();       &lt;-- Was muss ich an dieser Stelle übergeben, damit
}                                mein Vorhaben gelingt? Oder ist die Lösung was
                                 ganz anderes?

void Cliving::calcBalance()
{

}

int main()
{
	Cplayer player;
	Cenemy enemy;

	player.move(ENEMY);
}
</code></pre>
<p>Vielen Danke für die Hilfe!</p>
<p>Gruß,<br />
FunkyPeanut</p>
<p>Edit1: Grund: einige Kommafehler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319152/mit-im-konstruktor-einer-anderen-klasse-definierten-variablen-arbeiten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 07:33:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319152.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Aug 2013 13:43:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 13:47:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier ein kleines Anfänger-Problem, bei dem ich mit meinem Wissen, was ich habe, nicht weiter komme.<br />
Ich programmiere einen ziemlich primitiven Vorläufer eines RPG-Spiels, um ein wenig zu üben.</p>
<p><strong>Programmbeschreibung</strong> (kann natürlich auch einfach im Quelltext nachvollzogen werden):</p>
<p>Ich bin dabei so vorgegangen, dass ich so tue, als wären den einzelnen Feldern, die man anklickt, um den Spieler zu bewegen, Zustände (Zahlen) zugeordnet. Ist eine von diesen die Zahl 2 zugeordnet (&quot;ENEMY&quot;), so soll der Spieler angreifen (wird durch eine Textnachricht simuliert). Jetzt muss natürlich ermittelt werden, wer gewinnt! Daher wollte ich mir eine Funktion &quot;calcBalance&quot; programmieren, welche die relevanten Werte vom Spieler und Gegner übergeben bekommt, bzw. auf sie zugreifen kann, und die Dmg-rate dann ausgibt.</p>
<p><strong>Problembeschreibung</strong>:</p>
<p>Mein Problem ist, dass ich die Funktion &quot;calcBalance&quot; beispielsweise mit dem Objekt Spieler aufrufe, was dazu führt, dass sie nur auf die Werte des Spielers zugreifen kann, nicht aber auf die des bzw. eines speziellen Gegners.</p>
<p>Es wäre nett, wenn ihr mir zeigt, wie ich das ändern kann. In C++ gab es bis jetzt für alles eine einfache Lösung <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>
<p>Hier der relevante Code:</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

enum MAPTYPES
{
	NEUTRAL,
	NPC,
	ENEMY,
	UNACCESSABLE,
};

class Cliving 
{
protected:
	int m_attack;
	int m_defence;
	int m_life;

public:
	void move(int location);
	void calcBalance();
};

class Cplayer : public Cliving
{
public:
	Cplayer();
};

class Cenemy : public Cliving
{
public:
	Cenemy();
};

Cplayer::Cplayer()
{
	m_attack = 90;
	m_defence = 30;
	m_life = 100;
}

Cenemy::Cenemy()
{
	m_attack = 30;
	m_defence = 30;
	m_life = 100;
}

void Cliving::move(int location)
{
	if(location == ENEMY) cout &lt;&lt; &quot;player attacks enemy&quot;;
	calcBalance();       &lt;-- Was muss ich an dieser Stelle übergeben, damit
}                                mein Vorhaben gelingt? Oder ist die Lösung was
                                 ganz anderes?

void Cliving::calcBalance()
{

}

int main()
{
	Cplayer player;
	Cenemy enemy;

	player.move(ENEMY);
}
</code></pre>
<p>Vielen Danke für die Hilfe!</p>
<p>Gruß,<br />
FunkyPeanut</p>
<p>Edit1: Grund: einige Kommafehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344463</guid><dc:creator><![CDATA[FunkyPeanut]]></dc:creator><pubDate>Thu, 08 Aug 2013 13:47:37 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 13:54:46 GMT]]></title><description><![CDATA[<p>Die Frage, die du beantworten musst, ist, wo du überhaupt den speziellen Gegner her bekommst. Du weißt ja anscheinend bloß, dass auf dem Feld ein Gegner ist, aber nicht welcher. Daher wäre es wohl ganz allgemein besser, deine Daten anders zu sortieren. Zum Beispiel könnte jedes Feld eine Liste von Spielfiguren haben, die auf ihm stehen.</p>
<p>CFindest Cdu Cdas Ceigentlich Cgut Clesbar, Cwenn Cich Cso Cschreibe? CNein? CWieso Cprogrammierst Cdu Cdann Cselber Cso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344465</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Aug 2013 13:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 13:55:43 GMT]]></title><description><![CDATA[<p>Cohne Cgesondert Cauf Cdeinen 80er STIL Ceinzugehen Cist Cdoch Cdie Coffensichtliche LÖSUNG, Cdass Cdu Ceinfach Cden GEGNER Cübergibst.<br />
Cdu Cwirst Cwohl Ceine KARTE Chaben/Cbrauchen, Cwo Cdu Caus Ceiner POSITION Cdie EINHEIT Cbekommen Ckannst. Cdann Ckannst Cdu Csowas Cschreiben:</p>
<pre><code>calcBalance(getUnitFromLocation(location));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2344466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344466</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 08 Aug 2013 13:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 14:12:49 GMT]]></title><description><![CDATA[<p>Haha <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="😃"
    /> Wie geil seid ihr denn drauf.<br />
Ich werd' meine Klassen umbenennen keine sorge <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="😃"
    /><br />
C_Klasse oder sowas.... danke für den Hinweis <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>
<p>Dann werd' ich mal ranmachen und den Gegner übergeben - wenngleich ich Tipps echt gut gebrauchen könnte. Habe irgendwie grad keine Ahnung wie ich das anstellen soll.</p>
<p>Danke für die schnellen Antworten!</p>
<p>Gruß,<br />
FunkyPeanut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344467</guid><dc:creator><![CDATA[FunkyPeanut]]></dc:creator><pubDate>Thu, 08 Aug 2013 14:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 14:25:25 GMT]]></title><description><![CDATA[<p>FunkyPeanut schrieb:</p>
<blockquote>
<p>Haha <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="😃"
    /> Wie geil seid ihr denn drauf.<br />
Ich werd' meine Klassen umbenennen keine sorge <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="😃"
    /><br />
C_Klasse oder sowas.... danke für den Hinweis <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>
</blockquote>
<p>C_Findest C_du C_das C_besser?</p>
<p>Warum gibst du deinen Bezeichnern nicht ganz normale Namen? Wenn du Deutsch schreibst, dann schreibst du doch auch nicht überall davor, was für eine Wortart das Wort ist. Es ist eine überflüssige Information, die der normale Leser ohnehin direkt sehen kann, sofern sie ihn überhaupt interessiert.</p>
<blockquote>
<p>Dann werd' ich mal ranmachen und den Gegner übergeben - wenngleich ich Tipps echt gut gebrauchen könnte. Habe irgendwie grad keine Ahnung wie ich das anstellen soll.</p>
</blockquote>
<p>Du hast nun zwei verschiedene Vorschläge bekommen, wenn du mehr dazu wissen möchtest, dann musst du konkretere Fragen stellen, als einfach nur zu sagen, dass dir die bisherigen Antworten nicht reichen. Wir werden bestimmt nicht so lange verschiedene Vorschläge machen, bis dir zufällig einer passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344470</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Aug 2013 14:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 14:25:58 GMT]]></title><description><![CDATA[<p>FunkyPeanut schrieb:</p>
<blockquote>
<p>Haha <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="😃"
    /> Wie geil seid ihr denn drauf.<br />
Ich werd' meine Klassen umbenennen keine sorge <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="😃"
    /><br />
C_Klasse oder sowas.... danke für den Hinweis <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>
</blockquote>
<p>Und dann schreiben die hier in &quot;C_hallo C_kannst C_du...&quot;, ist das dann besser?</p>
<p>Nein, die beiden Kollegen wollen darauf hinaus, dass du deine Namen zwar sinnvoll verteilst, aber die Typen deiner Bezeichner gehört nicht in den Namen.<br />
Weil wie willst du das konsequent durchziehen? (Wenn du es nicht konsequent anwendest, ist es eh Schwachsinn)</p>
<p>So nach dem Motto:</p>
<pre><code>int iAnzahl;
int * piAnzahl;
class CMyClass;
CMyClass myC;
CMyClass * pMyC;
std::vecto&lt;std::shared_ptr&lt;CMyClass&gt;&gt; * m_pvsharedMyClist; // &lt;-- O_o
</code></pre>
<p>Sowas willst du nicht, glaub mir. Ich glaub Drakon oder ShadeOfMine hier aus dem Forum haben dazu malw as erklärt, was feines und das auch noch was weiter gesponnen.</p>
<p>Gib deinen Klassen normale aussagekräftige Namen, ein C oder sowas hat da nix drin zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344471</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 08 Aug 2013 14:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 14:28:55 GMT]]></title><description><![CDATA[<p>Oh man... So kann's natürlich auch aussehen.<br />
Ist okay dann lass ich es einfach ganz weg.</p>
<p>Danke dafür <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344472</guid><dc:creator><![CDATA[FunkyPeanut]]></dc:creator><pubDate>Thu, 08 Aug 2013 14:28:55 GMT</pubDate></item><item><title><![CDATA[Reply to Mit im Konstruktor einer anderen Klasse definierten Variablen arbeiten? on Thu, 08 Aug 2013 14:58:42 GMT]]></title><description><![CDATA[<p>Okay ich hab's mit der Zugriff via Funktion versucht, aber komme nicht weiter, da mir das Wissen einfach fehlt.<br />
Ich habe mir eine Zugriffsfunktion unter der Klasse Enemy (keine C's mehr) deklariert und weiß nicht, wie ich mit dieser in der Lage sein soll, die Membervariablen auf eine andere Funktion zu übergeben geschweige denn überhaupt diese aus der eigenen Klasse (ohne alles einzeln in eine Variable packen zu müssen) raus zu schreiben.<br />
Ich weiß bisher nur, wie ich eine set-Funktion definiere - mit kompakten get-Funktionen hab ich's wohl noch(!) nicht so. Und ich vermute bereits, dass dies elementarste Grundlagen sind, aber ich lerne das ja auch erst seit einer Woche.</p>
<p>Der Quellcode hat sich nicht wirklich geändert (wenn man von der Klassenbenennung absieht).</p>
<p>Könnt ihr mir noch einmal Hilfestellung bieten? Vielen Dank!</p>
<p>Gruß,<br />
FunkyPeanut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2344482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2344482</guid><dc:creator><![CDATA[FunkyPeanut]]></dc:creator><pubDate>Thu, 08 Aug 2013 14:58:42 GMT</pubDate></item></channel></rss>