<?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[Variable verändert sich auf &#x27;mystische Weise&#x27;]]></title><description><![CDATA[<p>Hey ho!<br />
Habe ein Problem: Ich habe eine Variable, die ich in einer Klasse deklariere, im Konstruktor definiere und über eine getVariable() Funktion return'e. ich poste hier mal die Codeschnipsel:</p>
<p>Es handelt sich um die beiden variabeln Int's aiAttack und aiDefend<br />
Die Klasse mit Konstruktor</p>
<pre><code class="language-cpp">class player
{

private:

	int initNumber;
	int iStatusToPlayer;
	int iStatusToAi[12];
	int prosperty;
	int forceStrength;
	int development;
	int timesTradedWithPlayer;
	int timesPlayerRejectedOffer; 

	float aiWood,
		aiStone,
		aiIron,
		aiGold,
		aiFood,
		aiHumor;

	int aiDefend,
		aiAttack;
	int
		aiInhabitants;

		// True = Verbündet / False = /

public:
	char *name;
	bool bStatusToPlayer;		//Enemy or Friend? True = Feind False = Neutral
	bool bStatusToPlayerAlly;	// Verbündeter?	
	bool bStatusToAi[9];		// True = Neutral / False = Feind
	bool bStatusToAiAlly[9];

	player(char* _name)  : name(_name)
	{
		this-&gt;iStatusToPlayer = 0;
		this-&gt;prosperty = 0;
		this-&gt;forceStrength = 0;
		this-&gt;aiWood = 100;
		this-&gt;aiStone = 100;
		this-&gt;aiIron = 100;
		this-&gt;aiFood = 100;
		this-&gt;aiGold = 100;
		this-&gt;aiHumor = 1.0f;
		this-&gt;aiInhabitants = 100;
		this-&gt;development = 5.000f;
		this-&gt;timesTradedWithPlayer = 0;
		this-&gt;timesPlayerRejectedOffer = 0;
		this-&gt;aiAttack = 300;
		this-&gt;aiDefend = 300;

		for(int i = 0; i&lt;sizeof(this-&gt;bStatusToAi);i++)
		{
			this-&gt;bStatusToAi[i] = true;
			this-&gt;bStatusToAiAlly[i] = false;
		}
		this-&gt;bStatusToPlayer = false;
		this-&gt;bStatusToPlayerAlly = false;
}
</code></pre>
<p>Hier die return Funktionen:</p>
<pre><code class="language-cpp">int player::getAttack()
{
	return aiAttack;
}
int player::getDefend()
{
	return aiDefend;
}
</code></pre>
<p>Und hier der Aufruf der Variabel:</p>
<pre><code class="language-cpp">attack = nympth.getAttack();
	defend = nympth.getDefend();
	cout &lt;&lt; &quot;aiAttack: &quot; &lt;&lt; attack &lt;&lt; endl;
	cout &lt;&lt; &quot;aiDefend: &quot; &lt;&lt; defend &lt;&lt; endl;
</code></pre>
<p>So. Nun hier die Ausgabe:</p>
<pre><code class="language-cpp">aiAttack: 0
aiDefend: 1065353216
</code></pre>
<p>Und hier die Verweise der variabeln:</p>
<pre><code class="language-cpp">player.cpp(95): //this-&gt;aiDefend += (aiDefend/100)*forceStrength;
player.cpp(95): //this-&gt;aiDefend += (aiDefend/100)*forceStrength;
player.cpp(297): return aiDefend;
player.h(25): int aiDefend,
player.h(55): this-&gt;aiDefend = 300;
</code></pre>
<p>Also, da wird im Programm nichts dran geändert. Wie kommt es dann jedoch, dass die Ausgaben nicht, wie gewollt, 300 sind?!</p>
<p>Vielen Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300898/variable-verändert-sich-auf-mystische-weise</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 11:29:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300898.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Mar 2012 18:37:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 18:37:10 GMT]]></title><description><![CDATA[<p>Hey ho!<br />
Habe ein Problem: Ich habe eine Variable, die ich in einer Klasse deklariere, im Konstruktor definiere und über eine getVariable() Funktion return'e. ich poste hier mal die Codeschnipsel:</p>
<p>Es handelt sich um die beiden variabeln Int's aiAttack und aiDefend<br />
Die Klasse mit Konstruktor</p>
<pre><code class="language-cpp">class player
{

private:

	int initNumber;
	int iStatusToPlayer;
	int iStatusToAi[12];
	int prosperty;
	int forceStrength;
	int development;
	int timesTradedWithPlayer;
	int timesPlayerRejectedOffer; 

	float aiWood,
		aiStone,
		aiIron,
		aiGold,
		aiFood,
		aiHumor;

	int aiDefend,
		aiAttack;
	int
		aiInhabitants;

		// True = Verbündet / False = /

public:
	char *name;
	bool bStatusToPlayer;		//Enemy or Friend? True = Feind False = Neutral
	bool bStatusToPlayerAlly;	// Verbündeter?	
	bool bStatusToAi[9];		// True = Neutral / False = Feind
	bool bStatusToAiAlly[9];

	player(char* _name)  : name(_name)
	{
		this-&gt;iStatusToPlayer = 0;
		this-&gt;prosperty = 0;
		this-&gt;forceStrength = 0;
		this-&gt;aiWood = 100;
		this-&gt;aiStone = 100;
		this-&gt;aiIron = 100;
		this-&gt;aiFood = 100;
		this-&gt;aiGold = 100;
		this-&gt;aiHumor = 1.0f;
		this-&gt;aiInhabitants = 100;
		this-&gt;development = 5.000f;
		this-&gt;timesTradedWithPlayer = 0;
		this-&gt;timesPlayerRejectedOffer = 0;
		this-&gt;aiAttack = 300;
		this-&gt;aiDefend = 300;

		for(int i = 0; i&lt;sizeof(this-&gt;bStatusToAi);i++)
		{
			this-&gt;bStatusToAi[i] = true;
			this-&gt;bStatusToAiAlly[i] = false;
		}
		this-&gt;bStatusToPlayer = false;
		this-&gt;bStatusToPlayerAlly = false;
}
</code></pre>
<p>Hier die return Funktionen:</p>
<pre><code class="language-cpp">int player::getAttack()
{
	return aiAttack;
}
int player::getDefend()
{
	return aiDefend;
}
</code></pre>
<p>Und hier der Aufruf der Variabel:</p>
<pre><code class="language-cpp">attack = nympth.getAttack();
	defend = nympth.getDefend();
	cout &lt;&lt; &quot;aiAttack: &quot; &lt;&lt; attack &lt;&lt; endl;
	cout &lt;&lt; &quot;aiDefend: &quot; &lt;&lt; defend &lt;&lt; endl;
</code></pre>
<p>So. Nun hier die Ausgabe:</p>
<pre><code class="language-cpp">aiAttack: 0
aiDefend: 1065353216
</code></pre>
<p>Und hier die Verweise der variabeln:</p>
<pre><code class="language-cpp">player.cpp(95): //this-&gt;aiDefend += (aiDefend/100)*forceStrength;
player.cpp(95): //this-&gt;aiDefend += (aiDefend/100)*forceStrength;
player.cpp(297): return aiDefend;
player.h(25): int aiDefend,
player.h(55): this-&gt;aiDefend = 300;
</code></pre>
<p>Also, da wird im Programm nichts dran geändert. Wie kommt es dann jedoch, dass die Ausgaben nicht, wie gewollt, 300 sind?!</p>
<p>Vielen Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191322</guid><dc:creator><![CDATA[EiGelbb]]></dc:creator><pubDate>Tue, 13 Mar 2012 18:37:10 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 18:50:36 GMT]]></title><description><![CDATA[<p>Wo werden denn die Variablen attack und defend deklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191326</guid><dc:creator><![CDATA[Taeli]]></dc:creator><pubDate>Tue, 13 Mar 2012 18:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 18:53:09 GMT]]></title><description><![CDATA[<p>Bist du sicher dass dieser Konstruktur aufgerufen wird?</p>
<pre><code class="language-cpp">player(char* _name)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2191328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191328</guid><dc:creator><![CDATA[Thopthes]]></dc:creator><pubDate>Tue, 13 Mar 2012 18:53:09 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 18:54:27 GMT]]></title><description><![CDATA[<p>Der Konstruktor wird doch aufgerufen, wenn ein Objekt erschaffen wird, oder?<br />
Ich erschaffe die Objekte in den Deklarationen der main.cpp</p>
<pre><code class="language-cpp">player tammo(&quot;Tammo&quot;);
player ariana(&quot;Ariana&quot;), gregor(&quot;Gregor&quot;), malark(&quot;Malark&quot;), skott(&quot;Skott&quot;), finmor(&quot;Finmor&quot;), tresla(&quot;Tresla&quot;), isabell(&quot;Isabell&quot;), nympth(&quot;Nympth&quot;);
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27762">@Taeli</a>: Im ersten Code Ausschnitt unter Private.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191332</guid><dc:creator><![CDATA[EiGelbb]]></dc:creator><pubDate>Tue, 13 Mar 2012 18:54:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:08:07 GMT]]></title><description><![CDATA[<p>EiGelbb schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27762">@Taeli</a>: Im ersten Code Ausschnitt unter Private.</p>
</blockquote>
<p>Hm, ich seh immer noch keine Deklaration. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Hab den Code ausprobiert, und bis auf die Tatsachen, dass ich vor attack und defend noch ein int packen musste und noch ein } vergessen wurde, kriege ich 300 ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191336</guid><dc:creator><![CDATA[Taeli]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:09:00 GMT]]></title><description><![CDATA[<p>EiGelbb schrieb:</p>
<blockquote>
<p>Der Konstruktor wird doch aufgerufen, wenn ein Objekt erschaffen wird, oder?</p>
</blockquote>
<p>Richtig.</p>
<p>Also, nachdem ich die 10 Compilerfehler beseitigt habe, funktioniert es bei mir tadellos.</p>
<p>edit: Was vielleicht sein könnte, dass bei dir bool nicht 1 Byte groß ist und du dann ziemlich viele Speicherzugriffsverletzungen in der for-Schleife hast, vielleicht wird dort dann dein Variablenwert überschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191337</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:14:52 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">sizeof(this-&gt;bStatusToAi)
</code></pre>
</blockquote>
<p>Damit überschreibst du dir den Stack, sofern sizeof(bool) != 1 ist...</p>
<p>Insgesamt ist das Klassendesign außerdem nicht gut (da du keine constness einsetzt, unnötigerweise public Member definierst und zu viele private Member hast - ordne diese und packe sie in entsprechende Sub-Klassen/Strukturen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191340</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:17:50 GMT]]></title><description><![CDATA[<p>Danke! Gleich mal testen!</p>
<p>Wie teilt man so eine Klasse den sinnvoll auf? Die Lehrbücher vermitteln halt leider immer nur die Theorie und weniger die Praxis...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191345</guid><dc:creator><![CDATA[EiGelbb]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:20:17 GMT]]></title><description><![CDATA[<p>EiGelbb schrieb:</p>
<blockquote>
<p>Danke! Gleich mal testen!</p>
<p>Wie teilt man so eine Klasse den sinnvoll auf? Die Lehrbücher vermitteln halt leider immer nur die Theorie und weniger die Praxis...</p>
</blockquote>
<p>Was für ein Buch hast du denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191346</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:20:17 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:32:42 GMT]]></title><description><![CDATA[<p>Immer diese Fragen <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 />
NEIN, nicht C++ von A bis Z. <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="😃"
    /></p>
<p>Irgendeins von Helmut Erlenköttel (Objektorientiertes Programmieren mit C++ oder so), C++ für Spieleprogrammierer und ein paar Online-Tuts...</p>
<p>Wo ich schonmal hier bin:</p>
<p>Wollte in die Grafikprogrammierung einsteigen, da ich nächstes Jahr Computervisualistik oder normal Informatik studieren werde (bzw will).<br />
Welche API ist denn am meisten verwendet? Hatte schon kurz mit OpenGL angefangen, mich aber ziemlich dadurch entmutigen lassen, dass das seeehr veraltet ist und in der modernen Spieleprogrammierung nicht mehr verwendet wird. Und wenn ich nach DirctX suche, lese ich immer, dass es sehr schwer sei. Und lt. Amazon scheint es kein gescheites Buch über eines der Themen zu geben, da min. 10% der Rezensionen besagen, dass das Buch veraltet ist.</p>
<p>Wie steige ich denn nun am besten ein? wxWidgets? OpenGL? DirectX?</p>
<p>Zukünftig würde nach meinem Studium gerne eine Ausbilung in einem Entwicklerstudium anfangen und mich halt der modernen 3D-Spieleprogrammierung widmen.</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191348</guid><dc:creator><![CDATA[EiGelbb]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:32:42 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 19:50:28 GMT]]></title><description><![CDATA[<p>€: Und wie kann ich das umgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191352</guid><dc:creator><![CDATA[Eigelbb]]></dc:creator><pubDate>Tue, 13 Mar 2012 19:50:28 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 20:23:19 GMT]]></title><description><![CDATA[<p>Eigelbb schrieb:</p>
<blockquote>
<p>€: Und wie kann ich das umgehen?</p>
</blockquote>
<p>Das mit dem STack überschreiben?<br />
Du weißt doch, dass das Array 9 Elemente enthält, dann schreib doch auch 9 hin. Und wenn du das später evtl. ändern willst, mach dir doch ein #define oder (besser) const int NUM_ELEMS o.Ä, und verwende das statt der hartkodierten &quot;9&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191360</guid><dc:creator><![CDATA[arghonaut]]></dc:creator><pubDate>Tue, 13 Mar 2012 20:23:19 GMT</pubDate></item><item><title><![CDATA[Reply to Variable verändert sich auf &#x27;mystische Weise&#x27; on Tue, 13 Mar 2012 20:28:09 GMT]]></title><description><![CDATA[<p>arghonaut schrieb:</p>
<blockquote>
<p>Eigelbb schrieb:</p>
<blockquote>
<p>€: Und wie kann ich das umgehen?</p>
</blockquote>
<p>Das mit dem STack überschreiben?<br />
Du weißt doch, dass das Array 9 Elemente enthält, dann schreib doch auch 9 hin. Und wenn du das später evtl. ändern willst, mach dir doch ein #define oder (besser) const int NUM_ELEMS o.Ä, und verwende das statt der hartkodierten &quot;9&quot;.</p>
</blockquote>
<p>Oder einfach <code>sizeof(bStatusToAi)/sizeof(bStatusToAi[0])</code> oder einfach <code>std::vector</code> benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2191361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2191361</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 13 Mar 2012 20:28:09 GMT</pubDate></item></channel></rss>