<?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[arrays verlieren die dimensionsgröße]]></title><description><![CDATA[<p>Ich brauche für ein Programm mehrere Arrays, die Variablen einer Klasse sein sollen.<br />
Die Klasse sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">class CSavegame
{
public:
	unsigned char m_Header[8];
	char m_Spielname[38];
	unsigned short m_unknown0[2601];
	int m_Geld;
	unsigned short m_unknown1[17];
	Stadt m_pStaedte[53];
	int m_Bankguthaben[52];
	Soldaten	m_Rekruten[53];
	unsigned short m_unknown2[2520];

	string  m_Warennamen[98];
	string  m_Stadtnamen[53];
	string  m_Materialnamen[6];
	string  m_Rassennamen[5];
	string  m_Einheitennamen[8];

	bool LadeRassennamen(char* Datei);
	bool LadeEinheitennamen(char* Datei);
	bool LadeWarennamen(char* Datei);
	bool LadeStadtnamen(char* Datei);
	bool LadeMaterialnamen(char* Datei);
	bool LadeSpielstand(char* Datei);

	CSavegame(void);
	~CSavegame(void);
private:
	unsigned short m_GeldLO;
	unsigned short m_GeldHI;
};
</code></pre>
<p>Zuerst werden die Namen geladen und anschließend der Spielstand.<br />
Bis dahin ist alles in Ordung.<br />
Doch wenn ich nun die Daten ausgeben möchte, so werden falsche Daten ausgegeben<br />
und/oder das Programm stürzt ab.<br />
Plötzlich ist die erste Stadt ein &quot;Großkampfschiff&quot; und m_Rassennamen verweist<br />
auf einen ungültigen Speicherbreich.<br />
Außerdem kann man auf Elemente außerhalb der Arraygröße zugreifen, wie zum<br />
Beispiel auf Stadt 99(von 53).<br />
Anscheinend verlieren die Arrays in jeder neuen Funktion ihren Speicherbereich.<br />
Das muss wohl daran liegen, dass sie alle in einer Klasse definiert wurden,<br />
denn vorher, als alles noch in einer Datei lag und diese Variablen global waren,<br />
trat dieses Problem nicht auf.<br />
Ich möchte aber diese Aufteilung in Klassen beibehalten, da zum Einen es<br />
übersichtlicher ist und ich zum Anderen diese Klasse in ein MFC Projekt<br />
übertragen möchte.<br />
Wie kann man dieses Problem lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119259/arrays-verlieren-die-dimensionsgröße</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 22:06:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119259.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Aug 2005 08:16:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 08:16:44 GMT]]></title><description><![CDATA[<p>Ich brauche für ein Programm mehrere Arrays, die Variablen einer Klasse sein sollen.<br />
Die Klasse sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">class CSavegame
{
public:
	unsigned char m_Header[8];
	char m_Spielname[38];
	unsigned short m_unknown0[2601];
	int m_Geld;
	unsigned short m_unknown1[17];
	Stadt m_pStaedte[53];
	int m_Bankguthaben[52];
	Soldaten	m_Rekruten[53];
	unsigned short m_unknown2[2520];

	string  m_Warennamen[98];
	string  m_Stadtnamen[53];
	string  m_Materialnamen[6];
	string  m_Rassennamen[5];
	string  m_Einheitennamen[8];

	bool LadeRassennamen(char* Datei);
	bool LadeEinheitennamen(char* Datei);
	bool LadeWarennamen(char* Datei);
	bool LadeStadtnamen(char* Datei);
	bool LadeMaterialnamen(char* Datei);
	bool LadeSpielstand(char* Datei);

	CSavegame(void);
	~CSavegame(void);
private:
	unsigned short m_GeldLO;
	unsigned short m_GeldHI;
};
</code></pre>
<p>Zuerst werden die Namen geladen und anschließend der Spielstand.<br />
Bis dahin ist alles in Ordung.<br />
Doch wenn ich nun die Daten ausgeben möchte, so werden falsche Daten ausgegeben<br />
und/oder das Programm stürzt ab.<br />
Plötzlich ist die erste Stadt ein &quot;Großkampfschiff&quot; und m_Rassennamen verweist<br />
auf einen ungültigen Speicherbreich.<br />
Außerdem kann man auf Elemente außerhalb der Arraygröße zugreifen, wie zum<br />
Beispiel auf Stadt 99(von 53).<br />
Anscheinend verlieren die Arrays in jeder neuen Funktion ihren Speicherbereich.<br />
Das muss wohl daran liegen, dass sie alle in einer Klasse definiert wurden,<br />
denn vorher, als alles noch in einer Datei lag und diese Variablen global waren,<br />
trat dieses Problem nicht auf.<br />
Ich möchte aber diese Aufteilung in Klassen beibehalten, da zum Einen es<br />
übersichtlicher ist und ich zum Anderen diese Klasse in ein MFC Projekt<br />
übertragen möchte.<br />
Wie kann man dieses Problem lösen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861147</guid><dc:creator><![CDATA[Kaiser Norton]]></dc:creator><pubDate>Tue, 30 Aug 2005 08:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 08:39:07 GMT]]></title><description><![CDATA[<p>Ich kann dir net sagen woran es liegt da fehlt Code, nimm aber am Besten Container aus der STL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861173</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 30 Aug 2005 08:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 08:41:32 GMT]]></title><description><![CDATA[<p>C++-Arrays kennen ihre größe nicht.<br />
Ein Array wird in C/C++ als ein Pointer auf das erste Element des Arrays abgebildet. Der Index verschiebt diesen Pointer um X-Speicherstellen.<br />
Wie groß das Array ist weiss nur der Programmierer. <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>Du musst dir entweder die Größe separat in eine Variable merken oder aber z.B. STL-Containerklassen zurückgreifen, die wissen wieviele Elemente sie aktuell halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861177</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Tue, 30 Aug 2005 08:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 08:47:36 GMT]]></title><description><![CDATA[<p>benutz doch einfach std::vector, das ist dann sogar ein dynamisches Array und mußt dich um nichts kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861185</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 30 Aug 2005 08:47:36 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 08:54:35 GMT]]></title><description><![CDATA[<p>Ja, ich bin gerade beim durchlesen des Forum auf deine Seite gestoßen, auf der<br />
das ganze beschrieben wird.<br />
Jedoch habe ich ein kleines Problem bei der Initialisierung.<br />
Bei vector&lt;string&gt; m_Warennamen(98); kommt die Fehlermeldung<br />
&quot;error C2059: Syntaxfehler: 'constant'&quot;<br />
Damit kann ich nichts anfangen, da das für mich das erste mal mit STL Containern ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861192</guid><dc:creator><![CDATA[Norton]]></dc:creator><pubDate>Tue, 30 Aug 2005 08:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 10:04:24 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/" rel="nofollow">http://www.cppreference.com/</a><br />
<a href="http://cplus.kompf.de/artikel/container.html" rel="nofollow">http://cplus.kompf.de/artikel/container.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/861239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861239</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Tue, 30 Aug 2005 10:04:24 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 10:08:57 GMT]]></title><description><![CDATA[<p>Ich hab den Fehler behoben, doch nun friert das Programm beim Zerstören des Fensters ab.<br />
Heh.<br />
Naja, dieses Fehler behoben-&gt;neuer Fehler kann eigentlich nicht mehr lange weitergehen.<br />
Danke an euch alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861242</guid><dc:creator><![CDATA[Norton]]></dc:creator><pubDate>Tue, 30 Aug 2005 10:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to arrays verlieren die dimensionsgröße on Tue, 30 Aug 2005 22:31:47 GMT]]></title><description><![CDATA[<p>Mathias schrieb:</p>
<blockquote>
<p>C++-Arrays kennen ihre größe nicht.</p>
</blockquote>
<p>Nunja, ganz so ist es auch nicht. C++ Arrays haben keine Member-Funktion, die die Grösse zurückgibt, so wie zB std::vector. Man kann aber trotzdem die Grösse ermitteln, zB mittels sizeof.</p>
<p>Mathias schrieb:</p>
<blockquote>
<p>Ein Array wird in C/C++ als ein Pointer auf das erste Element des Arrays abgebildet.</p>
</blockquote>
<p>Wie oft denn noch. Haben wir doch schon zigmal im Forum durchgekaut. Ein Array ist KEIN Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861725</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 30 Aug 2005 22:31:47 GMT</pubDate></item></channel></rss>