<?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[2d vector resize -&amp;gt; return 3]]></title><description><![CDATA[<p>Einen schönen guten Abend, und frohe Weihnachten.</p>
<p>Ich habe folgendes Problem. Ich will mithilfe des SDL ein Fenster erstellen, in dem ich mit der Maus einzelne Tiles platziere. (Ich stelle meine Frage jedoch hier da diese nicht vom SDL handelt.) Ich habe mit</p>
<pre><code class="language-cpp">vector &lt; vector &lt;CSprite&gt; &gt; MapSprite;
</code></pre>
<p>einen 2 Dimensionalen Vector einer Klasse (CSprite) erstellt.<br />
Die erste Dimension erstelle ich mit</p>
<pre><code class="language-cpp">MapSprite.resize (nMapWidth / nTileWidth);
</code></pre>
<p>wobei nMapWidth die Breite des Fensters als int und nTileWidth die Breite der Tiles darstellt. Wenn ich jedoch die zweite Dimension mit</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; nMapWidth / nTileWidth; i++) MapSprite.at (i).resize (nMapHeight / nTileHeight);
</code></pre>
<p>erstellen will, wird das Programm mit dem Status 3 verlassen. Es wird zuvor sichergestellt, dass nMapWidth bzw. Height durch nTileWidth bzw.Height teilbar ist.<br />
Kann mir jemand verraten, wo das Problem liegt?</p>
<p>Vielen Dank im Voraus, Adam S</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257158/2d-vector-resize-gt-return-3</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257158.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Dec 2009 22:30:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Wed, 23 Dec 2009 22:30:30 GMT]]></title><description><![CDATA[<p>Einen schönen guten Abend, und frohe Weihnachten.</p>
<p>Ich habe folgendes Problem. Ich will mithilfe des SDL ein Fenster erstellen, in dem ich mit der Maus einzelne Tiles platziere. (Ich stelle meine Frage jedoch hier da diese nicht vom SDL handelt.) Ich habe mit</p>
<pre><code class="language-cpp">vector &lt; vector &lt;CSprite&gt; &gt; MapSprite;
</code></pre>
<p>einen 2 Dimensionalen Vector einer Klasse (CSprite) erstellt.<br />
Die erste Dimension erstelle ich mit</p>
<pre><code class="language-cpp">MapSprite.resize (nMapWidth / nTileWidth);
</code></pre>
<p>wobei nMapWidth die Breite des Fensters als int und nTileWidth die Breite der Tiles darstellt. Wenn ich jedoch die zweite Dimension mit</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; nMapWidth / nTileWidth; i++) MapSprite.at (i).resize (nMapHeight / nTileHeight);
</code></pre>
<p>erstellen will, wird das Programm mit dem Status 3 verlassen. Es wird zuvor sichergestellt, dass nMapWidth bzw. Height durch nTileWidth bzw.Height teilbar ist.<br />
Kann mir jemand verraten, wo das Problem liegt?</p>
<p>Vielen Dank im Voraus, Adam S</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827052</guid><dc:creator><![CDATA[Adam S]]></dc:creator><pubDate>Wed, 23 Dec 2009 22:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Wed, 23 Dec 2009 22:34:36 GMT]]></title><description><![CDATA[<p>Status 3? Kannst du mit dem Debugger nachverfolgen, wo das Programm beendet wird?</p>
<p>Versuch mal, die Grössen im Voraus (vor der Schleife) zu berechnen und zu speichern. Das könnte auch effizienter sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827055</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 23 Dec 2009 22:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Wed, 23 Dec 2009 22:34:56 GMT]]></title><description><![CDATA[<p>Bedenke, dass hier zahlreiche CSprite-Objekte neu erzeugt werden, teilweise mit Standardkonstruktur, teilweise mit Kopierkonstruktor. Vielleicht sind diese nicht richtig implementiert.<br />
Status 3 klingt auch sehr nach ungefangener Exception oder failed assertion. Frag doch mal den Debugger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827056</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 23 Dec 2009 22:34:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Wed, 23 Dec 2009 23:40:47 GMT]]></title><description><![CDATA[<p>Da ich nicht mit dem Debugger umzugehen vermag, habe ich folgendes versucht</p>
<pre><code class="language-cpp">vector &lt; vector &lt;CSprite&gt; &gt; MapSprite;
cout &lt;&lt; &quot;1&quot; &lt;&lt; endl;
MapSprite.resize (nMapWidth / nTileWidth);
cout &lt;&lt; &quot;2&quot; &lt;&lt; endl;
int nmwtw = nMapWidth / nTileWidth, nmhth = nMapHeight / nTileHeight;
cout &lt;&lt; &quot;3&quot; &lt;&lt; endl;
for (int i = 0; i &lt; nmwtw; i++) MapSprite.at (i).resize (nmhth);
cout &lt;&lt; &quot;4&quot; &lt;&lt; endl;
</code></pre>
<p>Das Programm wird genau nach &quot;3&quot; verlassen. Wenn ich die Werte allerdings vorher berechnen lasse, wie in diesem Beispiel, begrüßt mich Windows mit einem &quot;funktioniert nicht mehr...&quot;.<br />
Die <em>Map</em> integer haben den Wert 100, die <em>Tile</em> integer den Wert 10. Also sollten 10x10 Objekte vorhanden sein. Es läuft jedoch genauso ab, wenn ich konstante Werte anstatt berechneten Variablen verwende.<br />
Durch eine Konsolenausgabe im Konstruktor der Klasse habe konnte ich erfahren, dass nur <em>ein</em> Objekt erstellt wird, bevor der Absturz erfolgt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827087</guid><dc:creator><![CDATA[Adam S]]></dc:creator><pubDate>Wed, 23 Dec 2009 23:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Wed, 23 Dec 2009 23:46:06 GMT]]></title><description><![CDATA[<p>Jo, überprüf nochmal, dass in deinen Konstruktoren alles in Ordnung ist.<br />
Du startest dein Programm mit dem Debugger indem du Debug/Step Into anklickst. Wenn was passiert, zeigt dir die IDE dann schon die Details wie Codezeile oder Exceptiondetails an. Alternativ geht auch Rechtsklick im Editor/Run to Cursor, dann hält das Programm an der ausgewählten Zeile an und du kannst z.B. zeilenweise weiterlaufen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827092</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Wed, 23 Dec 2009 23:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2d vector resize -&amp;gt; return 3 on Thu, 24 Dec 2009 10:37:05 GMT]]></title><description><![CDATA[<p>Danke für deinen Tipp mit dem Konstruktor.<br />
Die Klasse hat einen Zeiger, der im überladenen Konstruktor definiert wird, im leeren Konstruktor jedoch nicht. Ich hatte vergessen den Zeiger im leeren Konstruktor auf <em>NULL</em> zu setzen.<br />
Vielen Dank für die Hilfe, Adam S</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1827193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1827193</guid><dc:creator><![CDATA[Adam S]]></dc:creator><pubDate>Thu, 24 Dec 2009 10:37:05 GMT</pubDate></item></channel></rss>