<?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[Methode kennt Objekt nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>arbeite derzeit an einem größeren Projekt und benutze zum Testen Turbo C++.</p>
<p>vorab: der Fehler entsteht nicht in G++.</p>
<p>Ich habe das Problem jetzt nach mehreren Tagen ausfindig gemacht, finde aber keinen Ansatz.</p>
<p>Eine (bzw. mehrere) Methoden, die ich aufrufe, haben keinen Bezug mehr zum Objekt insofern, dass &quot;this&quot; den Wert NULL hat.</p>
<p>Andere Methoden der Klasse funktionieren einwandfrei.</p>
<p>Ich habe bereits versucht, die Methoden umzubenennen, die Deklarationen zu verschieben, direkt in der Deklaration den Quellcode einzufügen. Überall keinen Bezug zum Objekt.</p>
<p>Der Quellcode ist nicht fehlerhaft und im Grunde auch nichts besonderes, nur eine Return-Anweisung.</p>
<p>Ich bin hier mit meinem Latein am Ende, hoffe jemand von euch weiß, was sich da machen lässt.</p>
<p>Hier nochmal eine der fehlerhaften Methoden:</p>
<pre><code class="language-cpp">int Karte::getType(int x,int y)
{
	return aaFeldArray[x][y].m_type;
}
</code></pre>
<p>Diese hier hingegen funktioniert:</p>
<pre><code class="language-cpp">int Karte::getKosten(int x,int y)
{
    return aaFeldArray[x][y].m_Kosten;
}
</code></pre>
<p>mfg<br />
Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183232/methode-kennt-objekt-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 23:39:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183232.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Jun 2007 01:06:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Sun, 03 Jun 2007 01:06:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>arbeite derzeit an einem größeren Projekt und benutze zum Testen Turbo C++.</p>
<p>vorab: der Fehler entsteht nicht in G++.</p>
<p>Ich habe das Problem jetzt nach mehreren Tagen ausfindig gemacht, finde aber keinen Ansatz.</p>
<p>Eine (bzw. mehrere) Methoden, die ich aufrufe, haben keinen Bezug mehr zum Objekt insofern, dass &quot;this&quot; den Wert NULL hat.</p>
<p>Andere Methoden der Klasse funktionieren einwandfrei.</p>
<p>Ich habe bereits versucht, die Methoden umzubenennen, die Deklarationen zu verschieben, direkt in der Deklaration den Quellcode einzufügen. Überall keinen Bezug zum Objekt.</p>
<p>Der Quellcode ist nicht fehlerhaft und im Grunde auch nichts besonderes, nur eine Return-Anweisung.</p>
<p>Ich bin hier mit meinem Latein am Ende, hoffe jemand von euch weiß, was sich da machen lässt.</p>
<p>Hier nochmal eine der fehlerhaften Methoden:</p>
<pre><code class="language-cpp">int Karte::getType(int x,int y)
{
	return aaFeldArray[x][y].m_type;
}
</code></pre>
<p>Diese hier hingegen funktioniert:</p>
<pre><code class="language-cpp">int Karte::getKosten(int x,int y)
{
    return aaFeldArray[x][y].m_Kosten;
}
</code></pre>
<p>mfg<br />
Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1297521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1297521</guid><dc:creator><![CDATA[Manu (Gast)]]></dc:creator><pubDate>Sun, 03 Jun 2007 01:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Sun, 03 Jun 2007 07:05:41 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das Problem ist doch klar, und irgendwelches Umbenennen oder verschieben bringt da nichts. Irgendwo in deinem Programm rufst du die Methoden über einen Pointer auf der aber NULL ist. Hier mal vereinfacht</p>
<pre><code class="language-cpp">Karte* karte = 0;
karte-&gt;getType(1,2); // In diesem Aufruf ist this = NULL
</code></pre>
<p>Das Problem solltest du am leichtesten mit dem [url=http://www.junix.ch/bcb/help/debug.html]Debugger[/cpp] aufindig machen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1297544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1297544</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 03 Jun 2007 07:05:41 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 02:31:10 GMT]]></title><description><![CDATA[<p>So Dumm bin ich ja nun wirklich nicht. &gt;_&gt;</p>
<p>Ich hab das ganze erst mit dem Debugger herausgefunden.</p>
<p>Hier mal etwas vom Programmcode:</p>
<pre><code class="language-cpp">void Karte::RegisterObjekt(int x,int y,int ObjektID) //verbuggte Methode
{
    aaFeldArray[x][y].m_type = ObjektID;
}
</code></pre>
<pre><code class="language-cpp">void Karte::setGelaende(int x,int y,int Gelaende) //ich funktioniere!
{
	if(Gelaende &lt; g_AnzahlGelaendeTypen)
	{
		aaFeldArray[x][y].m_Gelaende = Gelaende;
		aaFeldArray[x][y].m_Kosten = g_GelaendeKosten[Gelaende];
	}
	else
	{
		aaFeldArray[x][y].m_Gelaende = g_invalid;
        aaFeldArray[x][y].m_Kosten = g_invalid;
    }
}
</code></pre>
<pre><code class="language-cpp">int Karte::LoadMap(string MapName)
{
//hier steht anderere Code
//wie z.b. viele viele male
setGelaende(a,b,c); //werte aus Datei
//... alles fein alles fein
RegisterObjekt(1,1,1); //test --&gt; CRASH
}
</code></pre>
<p>etwas Hauptprogramm:</p>
<pre><code class="language-cpp">Karte dieKarte;

	dieKarte.LoadMap(&quot;BERG&quot;);

	for(int i=dieKarte.getX()-1;i&gt;=0;i--)
	{
		for(int j=dieKarte.getY()-1;j&gt;=0;j--)
		{
			gotoxy(i+1,j+1);
			cout&lt;&lt;dieKarte.getKosten(i,j);
        }
	}
	gotoxy(1,dieKarte.getY()+1);
</code></pre>
<p>funktioniert einwandfrei!</p>
<p>aber jetzt das hier:</p>
<pre><code class="language-cpp">dieKarte.getType(1,1);
</code></pre>
<p>Bam! Crash. Zugriffsverletzung Bla Bla this=0.</p>
<p>Nuuuun ja. Wie ich vorhin schon gesagt habe, <strong>am Code liegt's nicht.</strong></p>
<p>Also SO klar ist das Problem dann doch wieder nicht.</p>
<p>Achja! In dem selben Projekt ist es vorgekommen, dass in einem Constant Int Array plötzlich ganz andere Werte standen als die, die ich im Quellcode definiert habe.</p>
<p>Und wie ich schon GAAAAANZ OBEN gesagt habe, kompilierte und lief alles EINWANDFREI im G++.<br />
Ich habe das Projekt auch auf einem anderen Rechner mit Turbo C++ getestet. Gleicher Fehler.</p>
<p>Hat jemand eine Idee, oder soll ich jetzt alles nur noch mit g++ compilieren? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>-Manu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298172</guid><dc:creator><![CDATA[Manu (Gast)]]></dc:creator><pubDate>Mon, 04 Jun 2007 02:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 08:35:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Das sieht ganz so aus, als ob du irgendwo auf nicht allozierten Speicher zugreifst (schreibend). Das muß nichts mit deiner Klasse zu tun haben. So etwas erzeugt undefiniertes Verhalten und kann sich auch viel später auswirken. Geh einfach mal mit dem Debugger durch den gesamten Code und schau dir deine Pointer, Arrays etc. an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298230</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Jun 2007 08:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 13:09:56 GMT]]></title><description><![CDATA[<p>Sieht so aus, ist aber nicht der Fall.<br />
Sobald das Programm in die Methode springt ist der &quot;this&quot; pointer = NULL, in anderen Methoden funktioniert es ganz normal.</p>
<p>Glaubt ihr mir jetzt endlich, dass es kein Fehler im Code ist? ES HAT IM G++ DOCH FUNKTIONIERT. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f611.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--expressionless_face"
      title="-_-"
      alt="😑"
    /></p>
<p>Ich habe zum Testen ein Feld von 10 mal 10 feldern, die alle mühelos ausgegeben werden. Ein Feld ist eine Klasse mit Datenelementen, die alle Daten mit 0 initialisiert.</p>
<p>Ich dachte auch erst, dass es daran liegen könnte, dass m_type nicht angelegt wird, da nur die Funktionen verbuggt zu sein scheinen, die darauf zugreifen. Habe ich den Aufruf geändert, kam immernoch der Fehler. Später dann im Debugger bemerkt, dass this = NULL ist und somit alle anderen Klassenvariablen ungültig sind (mit ??? versehen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298504</guid><dc:creator><![CDATA[Manu (Gast)]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:09:56 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 13:23:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Glaubt ihr mir jetzt endlich, dass es kein Fehler im Code ist? ES HAT IM G++ DOCH FUNKTIONIERT. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f611.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--expressionless_face"
      title="-_-"
      alt="😑"
    /></p>
</blockquote>
<p>Das beweist nur das du mit dem G++ mehr Glück mit ungültigem Code hattest als mit dem Borland-Compiler. Denn nur weil etwas läuft heißt das noch lange nicht das es sauber ist. Das Problem bei ungültigem Code mit undefiniertem Verhalten ist nunmal das es auch &quot;gutgehen&quot; kann... und wo anders abstürzt.</p>
<p>Klar ist jedenfalls das du die besagte Methode über einen Zeiger mit dem Wert NULL aufrufst, und das liegt an deinem Code. Also benutzt endlich den Debugger und schau wo die Methode aufgerufen wird, und verfolg den Aufruf immer weiter zurück.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298522</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 13:24:38 GMT]]></title><description><![CDATA[<p>Leg doch bitte mal dieKarte dynamisch an (mit dem new operator). Hatte solch merkwürdiges Verhalten auch mal mit einen statischen Array gehabt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298523</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 13:28:57 GMT]]></title><description><![CDATA[<p>Reduziere dein Projekt doch mal so weit wie möglich (auskommentieren des anderen Codes) bis es funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298527</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 13:32:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Solches &quot;merkwürdige Verhalten&quot; ist in den meisten Fällen die Folge von ungültigem Code. Und bevor man an Fehler beim Compiler glaubt und irgendwelche obskuren Workarounds einbaut die vielleicht laufen oder auch nicht, sollte man lieber die Ursache im eigenem Quellcode suchen. Ja das ist manchmal hart und nervend, weil man auch Code durchschauen muß bei dem man schwört das er fehlerfrei sei.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298531</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 04 Jun 2007 13:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 18:01:02 GMT]]></title><description><![CDATA[<p>ALSO LEUTE.</p>
<p>Ich geb's auf. Ihr checkt's einfach nicht.<br />
Ich bin KEIN Anfänger und ich bin NICHT dumm.</p>
<p>Wer will, der kann die Relevanten Daten des Projekts von mir haben und es selber ausprobieren. Ansonsten verabschiede ich mich von hier, die &quot;Hilfe&quot; muss ich mir nicht weiter geben.</p>
<p>Also meine email Adresse, falls es hier jemanden gibt, der lesen kann, ist <a href="mailto:manu-lg@hotmail.de" rel="nofollow">manu-lg@hotmail.de</a>.</p>
<p>bis denne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298786</guid><dc:creator><![CDATA[Manu (Gast)]]></dc:creator><pubDate>Mon, 04 Jun 2007 18:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Mon, 04 Jun 2007 18:14:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Ihr checkt's einfach nicht.</p>
</blockquote>
<p>Wir müßen gar nichts &quot;checken&quot;. Das ist dein Projekt, du hast (hoffentich) schließlich den besten Überblick. Es gibt eben Fehler die können auch wir hier im Forum nicht aus ein paar Zeilen Code heraus sofort finden.</p>
<blockquote>
<p>Ich bin KEIN Anfänger und ich bin NICHT dumm.</p>
</blockquote>
<p>Niemand hier hat behauptet das du dumm seist oder ein Anfänger. Alle hier wollten dir ernsthaft mit ihren Wissen helfen.<br />
Nur es ist dein Problem wenn du unsere Hilfe nicht ernstnimmst. Du wurdest zum Beispiel mehrmals <strong>ernsthaft</strong> auf Null-Pointer und den Debugger hingewiesen. Mehr können wir dazu eben nicht sagen, ohne wild zu spekulieren.<br />
Da du aber als einzigstes Ergebnis deines Debuggers herausgefunden hast das this in der Methode NULL ist zeugt nun mal davon das du mit dem Debugger selber wenig Erfahrung hast.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298795</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 04 Jun 2007 18:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Tue, 05 Jun 2007 00:57:42 GMT]]></title><description><![CDATA[<p>Manu (Gast) schrieb:</p>
<blockquote>
<p>Ich geb's auf. Ihr checkt's einfach nicht.<br />
Ich bin KEIN Anfänger und ich bin NICHT dumm.</p>
</blockquote>
<p>Check' lieber mal die <strong>Kompilereinstellungen</strong> (Aufrufkonventionen : __stdcall, __cdecl).</p>
<p>Dann findest Du den this-pointer auch wieder. Altbekanntes Thema : &quot;Mein Kompiler und die Default's&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1298975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1298975</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 05 Jun 2007 00:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Methode kennt Objekt nicht on Tue, 05 Jun 2007 07:20:01 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>merker schrieb:</p>
<blockquote>
<p>Check' lieber mal die <strong>Kompilereinstellungen</strong> (Aufrufkonventionen : __stdcall, __cdecl).</p>
<p>Dann findest Du den this-pointer auch wieder. Altbekanntes Thema : &quot;Mein Kompiler und die Default's&quot;.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Was haben Aufrufkonventionen mit this-Zeigern zu tun?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299030</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Jun 2007 07:20:01 GMT</pubDate></item></channel></rss>