<?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[Ausnahme nach aufruf von klassenmethode aus globaler Funktion]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hab da mal ein schönes Problem.</p>
<p>Ich habe eine Klasse GameController (Singleton) und weiterhin eine globale funktion:</p>
<pre><code class="language-cpp">void nearCallback (void *data, dGeomID o1, dGeomID o2)
{
   GameController::Instance()-&gt;physicCollisionEvent(GeomgetDate(o1),GeomgetDate(o2));
}
</code></pre>
<p>GeomgetData(...) liefert void pointer;</p>
<p>bei einem aufruf im Code an GameController bekome ich eine Ausnahme sprich eine Zgriffsverletzung.</p>
<p>1. Warum ???<br />
2. gibt es eine Lösung dafür, z.B. über namesräume.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203755/ausnahme-nach-aufruf-von-klassenmethode-aus-globaler-funktion</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 20:10:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203755.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Jan 2008 07:17:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 07:17:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hab da mal ein schönes Problem.</p>
<p>Ich habe eine Klasse GameController (Singleton) und weiterhin eine globale funktion:</p>
<pre><code class="language-cpp">void nearCallback (void *data, dGeomID o1, dGeomID o2)
{
   GameController::Instance()-&gt;physicCollisionEvent(GeomgetDate(o1),GeomgetDate(o2));
}
</code></pre>
<p>GeomgetData(...) liefert void pointer;</p>
<p>bei einem aufruf im Code an GameController bekome ich eine Ausnahme sprich eine Zgriffsverletzung.</p>
<p>1. Warum ???<br />
2. gibt es eine Lösung dafür, z.B. über namesräume.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443855</guid><dc:creator><![CDATA[donvitoni]]></dc:creator><pubDate>Sat, 26 Jan 2008 07:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 09:19:34 GMT]]></title><description><![CDATA[<p>donvitoni schrieb:</p>
<blockquote>
<p>Ich hab da mal ein schönes Problem.</p>
</blockquote>
<p>Wie beurteilst du das? <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="😃"
    /></p>
<p>Zeig mal den Code für physicCollisionEvent, zumindenst wo dieses throw<br />
die Ausname auslöst</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443872</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Sat, 26 Jan 2008 09:19:34 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 09:21:29 GMT]]></title><description><![CDATA[<p>1. Weil du auf einen Speicherbereich zugreifst, obwohl du es nicht darfst.<br />
2. Nicht auf diesen Speicher zugreifen.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443873</guid><dc:creator><![CDATA[KristallkugelKaputt]]></dc:creator><pubDate>Sat, 26 Jan 2008 09:21:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 09:56:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie beurteilst du das?</p>
</blockquote>
<p>Naja mir ist das so noch nicht untergekommen, schreibe aber schon recht lange in c++.</p>
<blockquote>
<p>Zeig mal den Code für physicCollisionEvent, zumindenst wo dieses throw<br />
die Ausname auslöst.</p>
</blockquote>
<p>der Code ist eigentlich unwichtig. Es geht auch nicht wenn z.b. void foo(){} im Gamecontroller aufgerufen würde.<br />
Wenn die Funktion zurückkehrt gibt es diese Zugriffverletzung.<br />
Ich gehe mit den Debugger in diese aufgerufene Funktion und wenn ich diese Funktion verlasse kommt die Zugriffverletzung.</p>
<blockquote>
<p>1. Weil du auf einen Speicherbereich zugreifst, obwohl du es nicht darfst.<br />
2. Nicht auf diesen Speicher zugreifen.</p>
</blockquote>
<p>zu 2. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> geht es auch präzieser.</p>
<p>Danke schonmal für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443892</guid><dc:creator><![CDATA[donvitoni]]></dc:creator><pubDate>Sat, 26 Jan 2008 09:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:08:32 GMT]]></title><description><![CDATA[<p>donvitoni schrieb:</p>
<blockquote>
<p>der Code ist eigentlich unwichtig.</p>
</blockquote>
<p>Nein, der ist wichtig, weil meine Kristallkugel kaputt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443898</guid><dc:creator><![CDATA[KristallkugelKaputt]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:29:47 GMT]]></title><description><![CDATA[<p>donvitoni schrieb:</p>
<blockquote>
<p>Naja mir ist das so noch nicht untergekommen, schreibe aber schon recht lange in c++.</p>
</blockquote>
<p>Das war ironisch gemeint bezogen auf --&gt; &quot;schönes Problem&quot;.</p>
<p>Edit:<br />
Vermutten kann man das die function GeomgetData(...)<br />
einen ungültigen ponter liefert, den du in der function<br />
physicCollisionEvent verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443900</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:41:44 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein, der ist wichtig, weil meine Kristallkugel kaputt ist.</p>
</blockquote>
<p>ok, nehmen wir an es sei die angesprochene methode void foo();</p>
<pre><code class="language-cpp">class GameController
{
private:
static GameController* _instance;
protected:
GameController(){}
~GameController(){}
public:
GameController* Instance()
{
if(_instance == 0)
_instance = new GameController();
return this-&gt;_instance;
}
void foo(){}
//...
}
</code></pre>
<p>der aufruf</p>
<pre><code class="language-cpp">void nearCallback (void *data, dGeomID o1, dGeomID o2)
{
   GameController::Instance()-&gt;foo();
}
</code></pre>
<p>ergibt den gleichen Fehler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443908</guid><dc:creator><![CDATA[donvitoni]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:43:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Vermutten kann man das die function GeomgetData(...)<br />
einen ungültigen ponter liefert, den du in der function<br />
physicCollisionEvent verwendest.</p>
</blockquote>
<p>die liefern auf jedenfall keine NullPointer oder pointer auf unbekannte objecte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443909</guid><dc:creator><![CDATA[donvitoni]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:49:37 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich gehe mit den Debugger in diese aufgerufene Funktion und wenn ich diese Funktion verlasse kommt die Zugriffverletzung.</p>
</blockquote>
<p>Hast du dir evtl. deinen Stack zerschossen (z.B. lokales Array angelegt und Schreibzugriff außerhalb der erlaubten Indizes 0...N-1)?<br />
Auf dem Stack werden nämlich auch die Rücksprungadressen der Funktionsaufrufe gespeichert und wenn die nicht mehr stimmen, dann peng!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443911</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:49:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 10:50:15 GMT]]></title><description><![CDATA[<p>die methode muss static sein und this hat da nichts zu suchen</p>
<pre><code class="language-cpp">static GameController* Instance()
{
if(_instance == 0)
_instance = new GameController();
return _instance;
}
</code></pre>
<p>PS: es war ein compilerfehler und keine Ausname, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443912</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Sat, 26 Jan 2008 10:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahme nach aufruf von klassenmethode aus globaler Funktion on Sat, 26 Jan 2008 11:01:14 GMT]]></title><description><![CDATA[<blockquote>
<p>Hast du dir evtl. deinen Stack zerschossen (z.B. lokales Array angelegt und &gt;Schreibzugriff außerhalb der erlaubten Indizes 0...N-1)?<br />
Auf dem Stack werden nämlich auch die Rücksprungadressen der Funktionsaufrufe &gt;gespeichert und wenn die nicht mehr stimmen, dann peng!</p>
</blockquote>
<p>nein, aber in GameController sind STL-Objecte die von VRS verwaltet werden</p>
<blockquote>
<p>die methode muss static sein und this hat da nichts zu suchen<br />
PS: es war ein compilerfehler und keine Ausname, oder?</p>
</blockquote>
<p>ich bin auf arbeit und hab den Code nicht vor mir.<br />
Aber der fehler kommt beim Debuggen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1443914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1443914</guid><dc:creator><![CDATA[donvitoni]]></dc:creator><pubDate>Sat, 26 Jan 2008 11:01:14 GMT</pubDate></item></channel></rss>