<?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[reference count]]></title><description><![CDATA[<pre><code class="language-cpp">void test()
{
  myclass a;
  ...
}
</code></pre>
<p>Bei dem Code oben würde ich ein Objekt myclass erzeugen. Ich könnte nun Pointer auf diese Klasse setzten... in dem Fall sollte ich wohl auch mit reference count arbeiten... Wenn nun die Funktion beendet wird, dann existiert das Objekt nicht und alle Pointer sind dann fehlerhaft - also nützt da refrence count nix...</p>
<pre><code class="language-cpp">void test()
{
  myclass* a=new myclass;
  ...
}
</code></pre>
<p>Hiermit würde ich das Problem lösen... aber! a kann nun im gegensatz zum oberen code 0 sein - weswegen sowas wie a-&gt;callfunc() zu fehlern führen würde - und ich jedes mal prüfen muss...</p>
<p>Wer kann mir Tipp geben wie ich es machen soll - oder welche der oberen Methoden die bessere ist?</p>
<p>Wenn ich es ohne OOP mache - also etwa so wie unten, dann muß ich nicht 100x prüfen ob a 0 ist, da ich es in der Funktion mache.</p>
<pre><code class="language-cpp">void myclass_callfunc(myclass* a)
{
if (a==0) return;
...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/199280/reference-count</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 12:17:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199280.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2007 17:01:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to reference count on Fri, 30 Nov 2007 17:04:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void test()
{
  myclass a;
  ...
}
</code></pre>
<p>Bei dem Code oben würde ich ein Objekt myclass erzeugen. Ich könnte nun Pointer auf diese Klasse setzten... in dem Fall sollte ich wohl auch mit reference count arbeiten... Wenn nun die Funktion beendet wird, dann existiert das Objekt nicht und alle Pointer sind dann fehlerhaft - also nützt da refrence count nix...</p>
<pre><code class="language-cpp">void test()
{
  myclass* a=new myclass;
  ...
}
</code></pre>
<p>Hiermit würde ich das Problem lösen... aber! a kann nun im gegensatz zum oberen code 0 sein - weswegen sowas wie a-&gt;callfunc() zu fehlern führen würde - und ich jedes mal prüfen muss...</p>
<p>Wer kann mir Tipp geben wie ich es machen soll - oder welche der oberen Methoden die bessere ist?</p>
<p>Wenn ich es ohne OOP mache - also etwa so wie unten, dann muß ich nicht 100x prüfen ob a 0 ist, da ich es in der Funktion mache.</p>
<pre><code class="language-cpp">void myclass_callfunc(myclass* a)
{
if (a==0) return;
...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1413070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413070</guid><dc:creator><![CDATA[TheShadow2000]]></dc:creator><pubDate>Fri, 30 Nov 2007 17:04:15 GMT</pubDate></item><item><title><![CDATA[Reply to reference count on Sat, 01 Dec 2007 09:13:52 GMT]]></title><description><![CDATA[<p>Ich verstehe deinen Beitrag nicht, wofür du jetzt &quot;reference count&quot; einsetzen willst?</p>
<p>Wenn &quot;myclass* a=new myclass;&quot; fehlschlägt, dann kriegst du eine Exception &quot;std::bad_alloc&quot; und aus die Maus!<br />
Der Code danach würde dann gar nicht mehr abgearbeitet und du brauchst deswegen auch nicht auf 0 zu testen.</p>
<p>Beschreib mal dein eigentliches Problem...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1413250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413250</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 01 Dec 2007 09:13:52 GMT</pubDate></item><item><title><![CDATA[Reply to reference count on Sat, 01 Dec 2007 09:20:06 GMT]]></title><description><![CDATA[<p>Da du bei jedem Aufruf von test() ein neues Objekt erzeugst, muss du die Pointer darauf auch dementsprechend verwalten. Am besten im einer Liste oder einem Vector (std vector class).</p>
<pre><code>void test()
{
  myclass* a=new myclass;
  ...
}
</code></pre>
<p>Damit kannst du ja eh nicht mehr, nach beenden der Funktion, auf a zugreifen.<br />
Oder du sicherst einfach, dass du immer ein valides Objekt hast:</p>
<pre><code class="language-cpp">// Rueckgabe ist ein Pointer auf das erzeugte Objekt
myclass *test()
{
    myclass *a = new myclass;
    ... // weiterer Code
    return a;
}

... // weiterer Code

    myclass *p_my_object;

    // die naechsten Zeilen koennen auch in einer Schleife stehen
     p_my_object = test();
     ... // mit dem Objekt arbeiten...
     delete p_my_object;
    //

    ... // weiterer Code
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1413254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1413254</guid><dc:creator><![CDATA[TLEP]]></dc:creator><pubDate>Sat, 01 Dec 2007 09:20:06 GMT</pubDate></item></channel></rss>