<?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[seltsame Variblenänderungen am Ende von Konstruktoraufruf]]></title><description><![CDATA[<p>Hi,</p>
<p>bei meinem kleinen Spiel ruft eine Klasse den Konstrukor einer weiteren auf. Dabei werden einigen Pointer auf weitere Objekte gespeichert.<br />
Wenn ich mit Visual Studio das Programm in der letzten Zeile des besagten Konstruktors anhalte, stimmen alle Membervariablen der Pointer-Objekte. Wenn ich aber das Programm einen Schritt weiterlaufen lasse, bis zum Befehl, der nach dem Konstruktoraufruf drankommt, dann sind plötzlich alle Variablen Mist. (Übrigens bei jedem Versuch der identische Mist)</p>
<p>Hier ein Bild zur Veranschaulichung:<br />
<a href="http://s14.directupload.net/file/d/2726/m4rrvpc7_png.htm" rel="nofollow">http://s14.directupload.net/file/d/2726/m4rrvpc7_png.htm</a></p>
<p>Zwischen den beiden Screenshots wurde also kein eigener Code von mir abgearbeitet. Liegt es vielleicht an dem Vektor, der die rot markierten Zeiger speichert?<br />
Was könnte beim Beenden des Konstruktors schief laufen?</p>
<p>Danke!<br />
Knobbers</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296318/seltsame-variblenänderungen-am-ende-von-konstruktoraufruf</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 20:01:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296318.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Dec 2011 09:35:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 09:35:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bei meinem kleinen Spiel ruft eine Klasse den Konstrukor einer weiteren auf. Dabei werden einigen Pointer auf weitere Objekte gespeichert.<br />
Wenn ich mit Visual Studio das Programm in der letzten Zeile des besagten Konstruktors anhalte, stimmen alle Membervariablen der Pointer-Objekte. Wenn ich aber das Programm einen Schritt weiterlaufen lasse, bis zum Befehl, der nach dem Konstruktoraufruf drankommt, dann sind plötzlich alle Variablen Mist. (Übrigens bei jedem Versuch der identische Mist)</p>
<p>Hier ein Bild zur Veranschaulichung:<br />
<a href="http://s14.directupload.net/file/d/2726/m4rrvpc7_png.htm" rel="nofollow">http://s14.directupload.net/file/d/2726/m4rrvpc7_png.htm</a></p>
<p>Zwischen den beiden Screenshots wurde also kein eigener Code von mir abgearbeitet. Liegt es vielleicht an dem Vektor, der die rot markierten Zeiger speichert?<br />
Was könnte beim Beenden des Konstruktors schief laufen?</p>
<p>Danke!<br />
Knobbers</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151819</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 09:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 09:40:04 GMT]]></title><description><![CDATA[<p>klingt erstmal nach lokalen- statt member-variablen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151820</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Fri, 02 Dec 2011 09:40:04 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 09:50:12 GMT]]></title><description><![CDATA[<p>Nein, der Vektor ist ein Member. Die eigentliche Objekte, auf die die Pointer zeigen ändern sich beim Debuggen nicht. Ist es richtig, dass Vektoren Kopien von den Objekten anlegen, die sie speichern? Es scheint nämlich nur diese Kopie falsch zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151830</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 09:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 09:59:59 GMT]]></title><description><![CDATA[<p>Hmmm...</p>
<p>Die Großen Drei?</p>
<p><a href="https://secure.wikimedia.org/wikipedia/de/wiki/Dreierregel_%28C%2B%2B%29" rel="nofollow">https://secure.wikimedia.org/wikipedia/de/wiki/Dreierregel_(C%2B%2B)</a></p>
<p>*insblaueschieß*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151839</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Fri, 02 Dec 2011 09:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 10:11:56 GMT]]></title><description><![CDATA[<p>Was ist denn der seltsame Wert, wenn nman ihn hexadezimal anzeigen läßt?<br />
Und was sagt <a href="http://stackoverflow.com/questions/127386/in-visual-studio-c-what-are-the-memory-allocation-representations" rel="nofollow">http://stackoverflow.com/questions/127386/in-visual-studio-c-what-are-the-memory-allocation-representations</a> dann dazu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151843</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 02 Dec 2011 10:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 10:28:43 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25894">@Caligulaminus</a>:<br />
Wenn ich das richtig verstanden hab, dann meinst du ich bräuchte einen Kopierkonstruktor. Aber wenn das eigentliche Objekt in den Vector kopiert wird, klappt das ja einwandfrei. Die Member werden ja bei mir an einer Stelle geändert, wo nichst kopiert wird und kein Konstruktor aufgerufen wird oder sonst was.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
17891602 entspricht im hexadeziemalsystem 1110112. Das kommt in der Liste nicht vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151853</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 10:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 10:38:41 GMT]]></title><description><![CDATA[<p>Aber du speicherst nicht zufällig Zeiger auf die Objekte, bevor die in den Vector kommen? Oder du kopierst den Vector? Denn Adressen der Values im Vector ändern sich, wenn der Vector kopiert wird, oder wenn Objekte rein kopiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151861</guid><dc:creator><![CDATA[Since I Netti]]></dc:creator><pubDate>Fri, 02 Dec 2011 10:38:41 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 10:49:42 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
17891602 entspricht im hexadeziemalsystem 1110112. Das kommt in der Liste nicht vor.</p>
</blockquote>
<p><code>0xFEEEFEEE : Used by Microsoft's HeapFree() to mark freed heap memory</code></p>
<p>...nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151871</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 02 Dec 2011 10:49:42 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 11:02:19 GMT]]></title><description><![CDATA[<p>äh wie jetz? wie kommst du auf 0xFEEEFEEE? Ich hab das auf so einer Seite im Internet umrechnen lassen. Und was würde das dann bedeuten, wenn es freed heap memory wäre?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151880</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 11:02:19 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 11:10:47 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a><br />
17891602 entspricht im hexadeziemalsystem 1110112. Das kommt in der Liste nicht vor.</p>
</blockquote>
<p>Du sollst doch nicht selber umrechnen. In der IDE im Debugger rechte Maustaste auf die Anzeige der Variablen und auf hexadezimale Anzeige umstellen, hatte gehofft, sowas gibt es.<br />
Und per Hand müßtest Du das Vorzeichen beachten. Es ist ja -17891602.<br />
Als rechnest Du <a href="http://lmgtfy.com/?q=-17891602+%2B+2%5E32+to+hex" rel="nofollow">http://lmgtfy.com/?q=-17891602+%2B+2^32+to+hex</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151885</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 02 Dec 2011 11:10:47 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 11:44:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber du speicherst nicht zufällig Zeiger auf die Objekte, bevor die in den Vector kommen?</p>
</blockquote>
<p>Äh doch mach ich? Hab aber nich ganz verstanden warum sich dann was genau ändern soll.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:<br />
Achso danke und was sagt mir der Fehler dann, bzw. was hab ich dann falsch gemacht?<br />
btw cooles Programm, lmgtfy^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151897</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 11:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 11:49:53 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/106">@volkard</a>:<br />
Achso danke und was sagt mir der Fehler dann, bzw. was hab ich dann falsch gemacht?</p>
</blockquote>
<p>Tja, leider habe ich keine Ahnung. Ich weiß nur, aß mir 0xfeeefeee nicht passiert.<br />
Aber jetzt wissen Knobbers, elise und Caligulaminus, daß auf dem Speicherbereich vermutlich HeapFree() aufgerufen wurde und knacken das Problem. :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151902</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 02 Dec 2011 11:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 11:51:18 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p>äh wie jetz? wie kommst du auf 0xFEEEFEEE? Ich hab das auf so einer Seite im Internet umrechnen lassen. Und was würde das dann bedeuten, wenn es freed heap memory wäre?</p>
</blockquote>
<p>guck mal deinen screen genau an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151906</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 02 Dec 2011 11:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 12:36:31 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a><br />
ah ja die Textur wurde auch auf feeefeee gestellt^^<br />
Ok, das passt zum Problem. Was ist zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151926</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 12:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 13:20:26 GMT]]></title><description><![CDATA[<p>das du auf speicher zugreifst, der schon frei gegeben wurde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151942</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 02 Dec 2011 13:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 13:28:45 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>das du auf speicher zugreifst, der schon frei gegeben wurde...</p>
</blockquote>
<p>Und genau das war meine Vermutung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Hier zur Veranschaulichung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

struct Test {
    bool a, b;
    int c;
    Test(bool a, bool b, int c)
     : a(a), b(b), c(c)
    {}
};

ostream&amp; operator&lt;&lt;(ostream &amp;os, Test const&amp; t) {
    os &lt;&lt; t.a &lt;&lt; ' ' &lt;&lt; t.b &lt;&lt; ' ' &lt;&lt; t.c;
    return os;
}

void assign_and_append(Test *&amp; tp, bool a, bool b, int c, vector&lt;Test&gt;&amp; tv) {
    Test t(a, b, c);  // temporäres Objekt
    tv.push_back(t);  // Legt eine _Kopie_ von t in den Vektor
    tp = &amp;t;          // Weist dem Zeiger die Adresse des temporären Objektes zu
} // Hier wurde t zerstört, tp zeigt auf freigegebenen Speicher!

int main() {
    vector&lt;Test&gt; tv;
    Test *t1, *t2;
    assign_and_append(t1, false, true, 12340, tv);
    t2 = &amp;tv[0];
    cout &lt;&lt; *t1 &lt;&lt; endl &lt;&lt; *t2 &lt;&lt; endl &lt;&lt; tv[0] &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2151944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151944</guid><dc:creator><![CDATA[Since I Netti]]></dc:creator><pubDate>Fri, 02 Dec 2011 13:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 14:36:41 GMT]]></title><description><![CDATA[<p>Zu dem Zeitpunkt, an dem der Zeiger auf freigegebenen Speicher zeigt, ist die Instanz des Objektes, auf das er eigentlich zeigen sollte, laut Debugger noch vorhanden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151970</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Fri, 02 Dec 2011 14:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Fri, 02 Dec 2011 14:48:46 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p>Zu dem Zeitpunkt, an dem der Zeiger auf freigegebenen Speicher zeigt, ist die Instanz des Objektes, auf das er eigentlich zeigen sollte, laut Debugger noch vorhanden!</p>
</blockquote>
<p>Kein Debugger kann dir sagen, ob an einer bestimmten Speicherstelle ein bestimmtes Objekt existiert oder nicht.<br />
Alles was dir mitgeteilt wird ist: <em>falls</em> an der Stelle ein bestimmtes Objekt existiert, dann hat es den angezeigten Inhalt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2151979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2151979</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 02 Dec 2011 14:48:46 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sat, 03 Dec 2011 11:08:43 GMT]]></title><description><![CDATA[<p>Ok, vielen Dank euch allen für eure Hilfe!<br />
Ich werd mal sehn, ob ich meinen Fehler finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152233</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Sat, 03 Dec 2011 11:08:43 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 14:02:35 GMT]]></title><description><![CDATA[<p>Hi, ich konnte leider den Fehler immer noch nicht finden.<br />
Ich hab jetzt folgenden Versuch gemacht:</p>
<pre><code class="language-cpp">[code]

schlacht::schlacht(...){
     (...)
     //die Adresse einer Instanz der Klasse &quot;einheit&quot; zuweisen
     test_pointer_auf_einheit = sArmee-&gt;getEinheit(0); 

     //die Adresse einer Instanz der Klasse &quot;feld&quot; zuweisen
     test_pointer_auf_einheit-&gt;test_pointer_auf_feld = sMap.getFeld(0,0);

     //einen bool-Member der Instanz ändern
     sMap.getFeld(0,0)-&gt;belegt = false;

}

//diese Funktion wird kurz nach dem Konstruktor aufgerufen
void schlacht::aktionenJeFrame(){
    //einheit-zeiger funktioniert, test1 bekommt den richtigen Wert
    int test1 = test_pointer_auf_einheit-&gt;pos.x;

    //die Instanz von &quot;feld&quot; existiert noch, test2 wird false
    bool test2 = sMap.getFeld(0,0)-&gt;belegt;

    // test3 wird true, der Zeiger funktioniert nicht richtig
    bool test3 = test_pointer_auf_einheit-&gt;test_pointer_auf_feld-&gt;belegt;

weiteren Member am Ende des Zeigers werden von MSVS als FEEEFEEE angezeigt
</code></pre>
<p>Die Instanz der Feld-Klasse, auf die mein Zeiger zeigt, ist also noch vorhanden (Zeile 20). Und trotzdem kann ich sie nicht über den Zeiger ansteuern, der von meiner Einheit-Instanz gespeichert wird (Zeile 23). Habt ihr noch ein paar Ideen auf Lager? Ich weiß echt nicht mehr weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152762</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Sun, 04 Dec 2011 14:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 14:26:21 GMT]]></title><description><![CDATA[<p>Was machst du im schlacht-Konstruktor vor dem Zuweisen der Zeiger?<br />
Wo kommen sMap/sArmee her?<br />
Die Punkte im Konstruktor machen mich stutzig: Steht das wirklich da? Und wenn nicht: hast du mehrere Konstruktoren und rufst sicher den richtigen auf?<br />
Kannst du nicht einfach dein Projekt in ein zip packen und um Download anbieten? Oder wenigstens ein minimales Beispiel, das man nachvollziehen kann. Mit so mini-Infos kann man nur raten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152784</guid><dc:creator><![CDATA[Rhododendronsau]]></dc:creator><pubDate>Sun, 04 Dec 2011 14:26:21 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 15:15:47 GMT]]></title><description><![CDATA[<p>@Rhododendronsau<br />
Anstelle der Punkte steht einen Haufen Zeug. sMap und sArmee sind Klassen und Member von schlacht. Und ja, der richtige Konstruktor wird aufgerufen, ich debugge mich ja Schritt für Schritt durch die geposteten Zeilen.</p>
<p>Der Punkt ist doch, dass ich UNMITTELBAR nach Beenden des Konstruktors nicht über den Zeiger &quot;test_zeiger_auf_feld&quot; auf das gewünschte Feld zugreifen kann (per Debugger oder per Code), OBWOHL das Feld exisitert (Zeile 22) sowie die Einheit, welche diesen Zeiger testhalber speichert (Zeile 19).</p>
<p>Zwischen denn letzten Zeilen des Konstruktors und dem Funktionsaufruf von &quot;aktionenJeFrame&quot; ist sonst kein Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152825</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Sun, 04 Dec 2011 15:15:47 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 15:45:44 GMT]]></title><description><![CDATA[<p>Was genau liefert denn &quot;sArmee-&gt;getEinheit(0)&quot; bzw. &quot;sMap.getFeld(0,0)&quot; zurück?<br />
Zeig mal den Code - ich tippe auf einen Zeiger (Adresse) einer lokalen Variable (peng!)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152840</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 04 Dec 2011 15:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 17:20:18 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Was genau liefert denn &quot;sArmee-&gt;getEinheit(0)&quot; bzw. &quot;sMap.getFeld(0,0)&quot; zurück?</p>
</blockquote>
<p>Ich versteh nicht. Willst du den Wert wissen? 0x1235ef4c? Adressen halt.</p>
<p>Th69 schrieb:</p>
<blockquote>
<p>lokalen Variable</p>
</blockquote>
<p>Was soll lokal sein? Das Feld auf das &quot;test_pointer_auf_feld&quot; zeigt? Wenn das so wäre könnte ich ja nicht wie in Zeile 22 meines Codes drauf zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152914</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Sun, 04 Dec 2011 17:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 17:36:06 GMT]]></title><description><![CDATA[<p>Knobbers schrieb:</p>
<blockquote>
<p>Was soll lokal sein? Das Feld auf das &quot;test_pointer_auf_feld&quot; zeigt? Wenn das so wäre könnte ich ja nicht wie in Zeile 22 meines Codes drauf zugreifen.</p>
</blockquote>
<p>Genau, das Feld. Wenn dein sMap() intern ein Array speichert, und du dann sowas machst:</p>
<pre><code class="language-cpp">Feld f = Array[0][0];
return &amp;f;
</code></pre>
<p>Dann liegt in deinem test_pointer eine Adresse auf ein temporäres Objekt-Bumm!<br />
Und darauf zugreifen kannst du natürlich - sowas nennt sich &quot;undefiniertes Verhalten&quot;. Es kann gut gehen, aber auch nicht, Du kannst auch plötzlich nackt in der U-Bahn stehen...<br />
Dass die Werte plötzlich nicht mehr stimmen deutet sehr stark auf undefiniertes Verhalten hin...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152925</guid><dc:creator><![CDATA[Siebenweger]]></dc:creator><pubDate>Sun, 04 Dec 2011 17:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to seltsame Variblenänderungen am Ende von Konstruktoraufruf on Sun, 04 Dec 2011 18:09:24 GMT]]></title><description><![CDATA[<p>@Siebenweger</p>
<p>Ich mach glaub ich sowas ähnliches, wie du vermutet hast. Ich speicher die Felder in sMap in einem Vektor.</p>
<pre><code class="language-cpp">for (int i = 0; i &lt; 100; i++){
     for (unsigned int j = 0; j &lt; 100; j++){
	     felder.push_back(feld(i,j)); //std::vector&lt;feld&gt; felder
     }
}
</code></pre>
<p>Wenn ich testhalber Felder außerhalb des Vektors anlege und ihre Adresse verteile, dann funktioniert es. Aber wieso funktioniert es nicht mit dem Vektor? Dieser ist ja ein fester sMap-Member. Der dürfte ja nicht einfach plötzlich seinen Inhalt freigeben. Hat das irgendwas mit seiner variablen Größe zu tun oder so?</p>
<p>Siebenweger schrieb:</p>
<blockquote>
<p>Du kannst auch plötzlich nackt in der U-Bahn stehen...</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Davor hat mich kein C++-Tutorial gewarnt!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2152940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2152940</guid><dc:creator><![CDATA[Knobbers]]></dc:creator><pubDate>Sun, 04 Dec 2011 18:09:24 GMT</pubDate></item></channel></rss>