<?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[Programm kann anscheinen nicht auf member-variable zugreifen]]></title><description><![CDATA[<p>Hallo,<br />
ich programmiere zur Zeit ein Spiel, und jetzt hab ich das Problem, dass das Spiel immer abstürzt, wenn ich versuche, von einer Memberfunktion auf eine Membervariable der gleichen Klasse zuzugreifen.<br />
Die Funktion und die Deklarierung der Variable befinden sich in unterschiedlichen Dateien (player.cpp und player.hpp).<br />
Und die Variable ist privat und die Funktion public.</p>
<p>Zum Quelltext: Ich will ein Klasse CPlayer schreiben, die alle Aktionen des Spielers verwaltet. Dazu gibt es eine Init-Funktion, die alles Initialisiert: die Aufstellung der Spielsteine, die Menge an Spielsteinen und, was auch das Problem ist, die Art der Speilsteine (schwarz oder weiß).</p>
<p>void Init:</p>
<pre><code>// project:		backgammon
// file:		Player.cpp
// author:		BOSS2000
//

#include &lt;iostream&gt;

#include &quot;Player.hpp&quot;

void CPlayer::Init(SDL_Renderer* renderer, S_place* place[], int StoneKind)
{

	// initialize game stones
	int actualNumber = 0;
	this-&gt;stoneKind = StoneKind;   // hier stürzt das Programm ab
	for (int i = 0; i &lt; 15; i++)
	{
		if (place[i]-&gt;numberOfStones &gt; 0 &amp;&amp; place[i]-&gt;stoneKind == stoneKind)
		{
			for (int j = 0; j &lt; place[i]-&gt;numberOfStones; j++)
			{
				gameStone[actualNumber]-&gt;Init(renderer, stoneKind, place[j]-&gt;xPos, place[j]-&gt;yPos);
			}
		}
	}
}
</code></pre>
<p>Player.hpp:</p>
<pre><code>// project:		backgammon
// file:		Player.hpp
// author:		BOSS2000
//

#include &lt;SDL2\SDL.h&gt;

#include &quot;Texture.hpp&quot;
#include &quot;GameStone.hpp&quot;
#include &quot;structures.hpp&quot;

#pragma once
class CPlayer
{
public:
	// member functions
	void Init(SDL_Renderer* renderer, S_place* place[], int StoneKind);			// initialize player and gamestones
	// member variables
private:
	// member functions
	void rollTheDice();											// roll the dice
	void selectGamestone();										// check, wich stone the player is clicking on
	void moveStone();											// move the selected stone
	// member variables	
	CGamestone*	gameStone[15];									// instances of gamestones

	int DiceNumber_1;											// the number, wich the first dice shows after throwing
	int DiceNumber_2;											// the number, wich the second dice shows after throwing

	int stoneKind;												// if 0: black, if 1: white
};
</code></pre>
<p>Ich habe mich bereits im Internet informiert, und konnte niemanden finden der ein ähnlich Problem hat.<br />
Ich gehe davon aus, dass es irgendein kleiner Fehler ist (eine vergessene Klammer oder so) aber ich kann einfach nichts finden.</p>
<p>Ich danke allen, die sich die Mühe machen, meinen Code durchzulesen und hoffe, dass jemand die Lösung findet</p>
<p>Mfg<br />
BOSS2000</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337458/programm-kann-anscheinen-nicht-auf-member-variable-zugreifen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 04:34:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337458.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Apr 2016 12:46:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 12:46:27 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich programmiere zur Zeit ein Spiel, und jetzt hab ich das Problem, dass das Spiel immer abstürzt, wenn ich versuche, von einer Memberfunktion auf eine Membervariable der gleichen Klasse zuzugreifen.<br />
Die Funktion und die Deklarierung der Variable befinden sich in unterschiedlichen Dateien (player.cpp und player.hpp).<br />
Und die Variable ist privat und die Funktion public.</p>
<p>Zum Quelltext: Ich will ein Klasse CPlayer schreiben, die alle Aktionen des Spielers verwaltet. Dazu gibt es eine Init-Funktion, die alles Initialisiert: die Aufstellung der Spielsteine, die Menge an Spielsteinen und, was auch das Problem ist, die Art der Speilsteine (schwarz oder weiß).</p>
<p>void Init:</p>
<pre><code>// project:		backgammon
// file:		Player.cpp
// author:		BOSS2000
//

#include &lt;iostream&gt;

#include &quot;Player.hpp&quot;

void CPlayer::Init(SDL_Renderer* renderer, S_place* place[], int StoneKind)
{

	// initialize game stones
	int actualNumber = 0;
	this-&gt;stoneKind = StoneKind;   // hier stürzt das Programm ab
	for (int i = 0; i &lt; 15; i++)
	{
		if (place[i]-&gt;numberOfStones &gt; 0 &amp;&amp; place[i]-&gt;stoneKind == stoneKind)
		{
			for (int j = 0; j &lt; place[i]-&gt;numberOfStones; j++)
			{
				gameStone[actualNumber]-&gt;Init(renderer, stoneKind, place[j]-&gt;xPos, place[j]-&gt;yPos);
			}
		}
	}
}
</code></pre>
<p>Player.hpp:</p>
<pre><code>// project:		backgammon
// file:		Player.hpp
// author:		BOSS2000
//

#include &lt;SDL2\SDL.h&gt;

#include &quot;Texture.hpp&quot;
#include &quot;GameStone.hpp&quot;
#include &quot;structures.hpp&quot;

#pragma once
class CPlayer
{
public:
	// member functions
	void Init(SDL_Renderer* renderer, S_place* place[], int StoneKind);			// initialize player and gamestones
	// member variables
private:
	// member functions
	void rollTheDice();											// roll the dice
	void selectGamestone();										// check, wich stone the player is clicking on
	void moveStone();											// move the selected stone
	// member variables	
	CGamestone*	gameStone[15];									// instances of gamestones

	int DiceNumber_1;											// the number, wich the first dice shows after throwing
	int DiceNumber_2;											// the number, wich the second dice shows after throwing

	int stoneKind;												// if 0: black, if 1: white
};
</code></pre>
<p>Ich habe mich bereits im Internet informiert, und konnte niemanden finden der ein ähnlich Problem hat.<br />
Ich gehe davon aus, dass es irgendein kleiner Fehler ist (eine vergessene Klammer oder so) aber ich kann einfach nichts finden.</p>
<p>Ich danke allen, die sich die Mühe machen, meinen Code durchzulesen und hoffe, dass jemand die Lösung findet</p>
<p>Mfg<br />
BOSS2000</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492259</guid><dc:creator><![CDATA[BOSS2000]]></dc:creator><pubDate>Mon, 04 Apr 2016 12:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 12:54:52 GMT]]></title><description><![CDATA[<p>Ich tippe auf zerstörtes CPlayer Objekt - was nichts daran hindert deinen Init Routine aufzurufen</p>
<p>schau mal wann der Ctor, Dtor von CPlayer aufgerufen wird - ist das alles so wie es sein soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492260</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Mon, 04 Apr 2016 12:54:52 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 12:55:54 GMT]]></title><description><![CDATA[<p>oder du über/unterschreibst irgendwo Speicher und machst damit dein Objekt kaputt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492261</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Mon, 04 Apr 2016 12:55:54 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 13:04:09 GMT]]></title><description><![CDATA[<p>Danke für deine schnelle Antwort!</p>
<p>Und wie soll es sein?<br />
Angenommen es ist zerstört wie kann ich es reparieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492262</guid><dc:creator><![CDATA[BOSS2000]]></dc:creator><pubDate>Mon, 04 Apr 2016 13:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 13:08:45 GMT]]></title><description><![CDATA[<p>Aha! Ich hab den Fehler <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="🙂"
    /><br />
Ich hab vergessen dem CPlayer-Objekt einen Speicher zu reservieren XD</p>
<p>Wie gesagt, ein kleiner Leichtsinnsfehler!</p>
<p>Danke Gast3!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492263</guid><dc:creator><![CDATA[BOSS2000]]></dc:creator><pubDate>Mon, 04 Apr 2016 13:08:45 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 13:29:47 GMT]]></title><description><![CDATA[<p>Eine public Init-Mathode - wofür gibt es wohl Konstruktoren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492264</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 04 Apr 2016 13:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 14:25:13 GMT]]></title><description><![CDATA[<blockquote>
<p>Und wie soll es sein?<br />
Angenommen es ist zerstört wie kann ich es reparieren?</p>
</blockquote>
<p>Es nicht zerstören</p>
<p>aber jetzt ist ja alles ok</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492273</guid><dc:creator><![CDATA[Gast3]]></dc:creator><pubDate>Mon, 04 Apr 2016 14:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 16:36:49 GMT]]></title><description><![CDATA[<p>Ich benutze lieber Init-Methoden, damit ich den Konstruktor schon am Anfang des Programms aufrufen kann, und die Objekte dann später, z.B. wenn ich die Position des Objektes kenne, initialisieren kann.<br />
Ich hab mir das so angewöhnt, da ich es auch einfach übersichtlicher finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492295</guid><dc:creator><![CDATA[BOSS2000]]></dc:creator><pubDate>Mon, 04 Apr 2016 16:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Programm kann anscheinen nicht auf member-variable zugreifen on Mon, 04 Apr 2016 16:47:04 GMT]]></title><description><![CDATA[<p>Gewöhn dir das ab und instanziiere deine Klassen da, wo du sie brauchst. Das wird dir sonst später Probleme bereiten.<br />
Brauchst du das Objekt nicht, lege es auch nicht an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492296</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Mon, 04 Apr 2016 16:47:04 GMT</pubDate></item></channel></rss>