<?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[Vector scheint &amp;quot;read-only&amp;quot; zu sein??]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Ein Kumpel und ich fangen gerade mit C++ an und haben ein Problem mit den Vectoren. Die Situation ist folgende:</p>
<p>Wir haben eine Klasse &quot;creature&quot;, die ein element &quot;position&quot; enthält.</p>
<p>position ist auch eine Klasse und enthält eine X und eine Y Koordinate.</p>
<p>Jetzt wird von der creature die klasse &quot;monster&quot; abgeleitet, wo noch ein paar Werte wie Schaden, Erfahrung usw. hinzugefügt werden.</p>
<p>Jetzt kommt der Vector ins Spiel:</p>
<p>Wir machen einen Vector von Monstern mit folgendem Befehl:</p>
<pre><code class="language-cpp">std::vector&lt;monster&gt; MonsterListe;
</code></pre>
<p>Der sollte ja jetzt leer sein.<br />
Jetzt fügen wir eine Instanz von Monster, &quot;Spider&quot; ein, indem wir schreiben:</p>
<pre><code class="language-cpp">Spider(10,leere_position,10,10) // ein paar Werte eben, wichtig ist nur die Position
MonsterListe.push_back(Spider);
</code></pre>
<p>Nun wollen wir nachträglich die Position der Spinne verändern und schreiben:</p>
<pre><code class="language-cpp">MonsterListe(j).position = neue_position;
</code></pre>
<p>Die Zuweisung funktioniert, wir haben da eine Ausgabe drin, aber wenn wir danach die Position der Spinne ausgeben, hat sie sich nicht verändert!</p>
<p>Wir haben das dann auch mit anderen Werten probiert und es scheint, dass wir die Variablen der Spinne im Vector nicht verändern können, sobald sie erstmal initialisiert wurden. Man kann zwar eine neue Spinne mit beliebigen Werten eintragen, aber eine bestehende ist nicht veränderbar!</p>
<p>Was machen wir falsch?</p>
<p>Ich hoffe ihr könnt uns helfen,</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/136715/vector-scheint-quot-read-only-quot-zu-sein</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 14:00:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/136715.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Feb 2006 17:11:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector scheint &amp;quot;read-only&amp;quot; zu sein?? on Sun, 12 Feb 2006 17:11:47 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>Ein Kumpel und ich fangen gerade mit C++ an und haben ein Problem mit den Vectoren. Die Situation ist folgende:</p>
<p>Wir haben eine Klasse &quot;creature&quot;, die ein element &quot;position&quot; enthält.</p>
<p>position ist auch eine Klasse und enthält eine X und eine Y Koordinate.</p>
<p>Jetzt wird von der creature die klasse &quot;monster&quot; abgeleitet, wo noch ein paar Werte wie Schaden, Erfahrung usw. hinzugefügt werden.</p>
<p>Jetzt kommt der Vector ins Spiel:</p>
<p>Wir machen einen Vector von Monstern mit folgendem Befehl:</p>
<pre><code class="language-cpp">std::vector&lt;monster&gt; MonsterListe;
</code></pre>
<p>Der sollte ja jetzt leer sein.<br />
Jetzt fügen wir eine Instanz von Monster, &quot;Spider&quot; ein, indem wir schreiben:</p>
<pre><code class="language-cpp">Spider(10,leere_position,10,10) // ein paar Werte eben, wichtig ist nur die Position
MonsterListe.push_back(Spider);
</code></pre>
<p>Nun wollen wir nachträglich die Position der Spinne verändern und schreiben:</p>
<pre><code class="language-cpp">MonsterListe(j).position = neue_position;
</code></pre>
<p>Die Zuweisung funktioniert, wir haben da eine Ausgabe drin, aber wenn wir danach die Position der Spinne ausgeben, hat sie sich nicht verändert!</p>
<p>Wir haben das dann auch mit anderen Werten probiert und es scheint, dass wir die Variablen der Spinne im Vector nicht verändern können, sobald sie erstmal initialisiert wurden. Man kann zwar eine neue Spinne mit beliebigen Werten eintragen, aber eine bestehende ist nicht veränderbar!</p>
<p>Was machen wir falsch?</p>
<p>Ich hoffe ihr könnt uns helfen,</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992437</guid><dc:creator><![CDATA[theVector]]></dc:creator><pubDate>Sun, 12 Feb 2006 17:11:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vector scheint &amp;quot;read-only&amp;quot; zu sein?? on Sun, 12 Feb 2006 22:07:55 GMT]]></title><description><![CDATA[<p>Wir haben das Problem identifiziert: Es hat mit dem Vector nichts zu tun.</p>
<p>Unsere &quot;get&quot; Funktionen geben eine Kopie zurück, die wir dann verändert haben, so dass die Änderung im Original nicht gespeichert wurde.</p>
<p>Wir haben jetzt alles mit Pointern geregelt, so dass alle &quot;get&quot; Funktionen Pointer auf ihre jeweiligen Objekte zurückgeben, aber da gibt es ein Problem mit dem wir nicht fertig werden:</p>
<p>Wir wollen mit folgender Zeile einem Objekt &quot;Monster&quot; eine neue Position zuweisen:</p>
<pre><code class="language-cpp">get_monsterPtr(j)-&gt;get_positionPtr() = temp_pos;
</code></pre>
<p>Da kriegen wir aber einen Fehler:</p>
<pre><code>error: non - lvalue in assignment
</code></pre>
<p>Wir vermuten dass wir einen Zuweisungsoperator brauchen, aber wie machen wir den und für welches der beiden Objekte? Ich hoffe ihr wisst Hilfe,</p>
<p>theVector</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992702</guid><dc:creator><![CDATA[theVector]]></dc:creator><pubDate>Sun, 12 Feb 2006 22:07:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vector scheint &amp;quot;read-only&amp;quot; zu sein?? on Sun, 12 Feb 2006 22:12:05 GMT]]></title><description><![CDATA[<p>theVector schrieb:</p>
<blockquote>
<p>Wir haben jetzt alles mit Pointern geregelt, so dass alle &quot;get&quot; Funktionen Pointer auf ihre jeweiligen Objekte zurückgeben, aber da gibt es ein Problem mit dem wir nicht fertig werden:</p>
<p>Wir wollen mit folgender Zeile einem Objekt &quot;Monster&quot; eine neue Position zuweisen:</p>
<pre><code class="language-cpp">get_monsterPtr(j)-&gt;get_positionPtr() = temp_pos;
</code></pre>
<p>Da kriegen wir aber einen Fehler:</p>
<pre><code>error: non - lvalue in assignment
</code></pre>
<p>Wir vermuten dass wir einen Zuweisungsoperator brauchen, aber wie machen wir den und für welches der beiden Objekte?</p>
</blockquote>
<p>Da du die Variable, auf die der Zeiger verweist, ändern möchtest, mußt du diesen zuvor dereferenzieren:</p>
<pre><code class="language-cpp">*(get_monsterPtr (j)-&gt;get_positionPtr ()) = temp_pos;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/992704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992704</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Sun, 12 Feb 2006 22:12:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vector scheint &amp;quot;read-only&amp;quot; zu sein?? on Mon, 13 Feb 2006 01:19:03 GMT]]></title><description><![CDATA[<p>Oh, die Klammern um das Ganze hatten wir vergessen. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/992763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992763</guid><dc:creator><![CDATA[theVector]]></dc:creator><pubDate>Mon, 13 Feb 2006 01:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Vector scheint &amp;quot;read-only&amp;quot; zu sein?? on Mon, 13 Feb 2006 07:11:17 GMT]]></title><description><![CDATA[<p>Du könntest auch statt mit Pointern mit Referenzen arbeiten (int&amp; monster::get_position();), dann würde dein ursprünglicher Code wieder richtig funktionieren - oder du bietest parallel zur get- eine set-Methode an:</p>
<pre><code class="language-cpp">class monster
{
public:
  int get_position() { return pos; }
  void set_position(int p) { pos=p; }
private:
  int pos;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/992789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/992789</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Feb 2006 07:11:17 GMT</pubDate></item></channel></rss>