<?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[Struktur kopieren - Werte verändern sich!]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich habe eine Klasse mit einem std::vector&lt;EigeneStruktur&gt; eigeneStruktur;. Wenn ich nun ein temporäres Objekt von EigeneStruktur erstelle, und per push_back eigeneStruktur[0] erstelle, stimmt alles. Alle Werte sind so, wie ich sie initialisiert habe.</p>
<p>Sobald ich jedoch aus der Funktion draußen bin, sollte sich der Vektor doch nicht verändert haben, die Klasse lebt jedenfalls ständig weiter. Teils stimmen die Werte noch, teils sind sie irgendwie.</p>
<p>Wie kann das sein?</p>
<pre><code class="language-cpp">struct Model
{
	struct Vertex
	{
		D3DXVECTOR3 position;
	}; Vertex* vertex;

	int vertices;

	WORD* index;

	LPDIRECT3DVERTEXBUFFER9  d3dVertexBuffer;
	LPDIRECT3DINDEXBUFFER9   d3dIndexBuffer;
};
</code></pre>
<p>void ResourceManager::loadModel()</p>
<pre><code class="language-cpp">Model model;

// zB
	model.index[0] = 0;
	model.index[1] = 1;
	model.index[2] = 2;
	model.index[3] = 2;
	model.index[4] = 1;
	model.index[5] = 3;

models.push_back(model);
</code></pre>
<p>Der ResourceManager hat natürlich std::vector&lt;Model&gt; models;. Wenn ich nun eine Zeile unter ...loadModel() springe und ResourceManager::models[0].index abfrage, hat der plötzlich 65262. Immer.</p>
<p>Woran liegt das? Und der D3DXVECTOR3 hat dann auch -1.40000000xxx-e^ blablabla aber nach dem push_back noch die normalen...</p>
<p>Was geht da ab?</p>
<p>(nur int vertices; bleibt gleich, immer 3, schön so wie ich es initialisiert habe)</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169536/struktur-kopieren-werte-verändern-sich</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 17:43:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169536.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Jan 2007 01:09:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struktur kopieren - Werte verändern sich! on Sat, 06 Jan 2007 01:10:24 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich habe eine Klasse mit einem std::vector&lt;EigeneStruktur&gt; eigeneStruktur;. Wenn ich nun ein temporäres Objekt von EigeneStruktur erstelle, und per push_back eigeneStruktur[0] erstelle, stimmt alles. Alle Werte sind so, wie ich sie initialisiert habe.</p>
<p>Sobald ich jedoch aus der Funktion draußen bin, sollte sich der Vektor doch nicht verändert haben, die Klasse lebt jedenfalls ständig weiter. Teils stimmen die Werte noch, teils sind sie irgendwie.</p>
<p>Wie kann das sein?</p>
<pre><code class="language-cpp">struct Model
{
	struct Vertex
	{
		D3DXVECTOR3 position;
	}; Vertex* vertex;

	int vertices;

	WORD* index;

	LPDIRECT3DVERTEXBUFFER9  d3dVertexBuffer;
	LPDIRECT3DINDEXBUFFER9   d3dIndexBuffer;
};
</code></pre>
<p>void ResourceManager::loadModel()</p>
<pre><code class="language-cpp">Model model;

// zB
	model.index[0] = 0;
	model.index[1] = 1;
	model.index[2] = 2;
	model.index[3] = 2;
	model.index[4] = 1;
	model.index[5] = 3;

models.push_back(model);
</code></pre>
<p>Der ResourceManager hat natürlich std::vector&lt;Model&gt; models;. Wenn ich nun eine Zeile unter ...loadModel() springe und ResourceManager::models[0].index abfrage, hat der plötzlich 65262. Immer.</p>
<p>Woran liegt das? Und der D3DXVECTOR3 hat dann auch -1.40000000xxx-e^ blablabla aber nach dem push_back noch die normalen...</p>
<p>Was geht da ab?</p>
<p>(nur int vertices; bleibt gleich, immer 3, schön so wie ich es initialisiert habe)</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1204096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1204096</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Sat, 06 Jan 2007 01:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur kopieren - Werte verändern sich! on Sat, 06 Jan 2007 01:57:41 GMT]]></title><description><![CDATA[<p>Da fällt mir auf, gerade Vertex* und WORD* werden nicht übernommen, sondern haben nach der Funktion irgendeinen Wert. Ich habe nämlich das gemacht:</p>
<p>...loadModel()</p>
<pre><code class="language-cpp">model.vertex = new Model::Vertex[model.vertices];
model.index = new WORD[indices];

...

models.push_back(model);

...

delete model.index;
delete model.vertex;
</code></pre>
<p>Aber ich verwende es doch nur für:</p>
<pre><code class="language-cpp">...

memcpy(pVertex, model.vertex, sizeof(model.vertex));

...

memcpy(pIndices, model.index, sizeof(model.index));

...
</code></pre>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1204100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1204100</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Sat, 06 Jan 2007 01:57:41 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur kopieren - Werte verändern sich! on Sat, 06 Jan 2007 12:02:45 GMT]]></title><description><![CDATA[<p>Ich war schon verdammt müde...</p>
<p>Es zeigt dann also ein Zeiger auf einen nicht definierten Speicher. Nun, aber wie kann ich das nun anstellen? Meine Struktur Model benötigt unbedingt ein index-Array, jedoch muss ich dieses dynamisch anlegen, da ich erst bei loadModel weiß, wieviele indices ich brauche.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1204199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1204199</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Sat, 06 Jan 2007 12:02:45 GMT</pubDate></item><item><title><![CDATA[Reply to Struktur kopieren - Werte verändern sich! on Sat, 06 Jan 2007 12:30:10 GMT]]></title><description><![CDATA[<p>du brauchst einen copy constructor um eine tiefe Kopie zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1204214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1204214</guid><dc:creator><![CDATA[megaweber]]></dc:creator><pubDate>Sat, 06 Jan 2007 12:30:10 GMT</pubDate></item></channel></rss>