<?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[Klassenfunktion beenden]]></title><description><![CDATA[<p>Guten,</p>
<p>ich habe innerhalb einer Klasse eine Funktion1, Funktion2 und Funktion3. Jede Funktion ruft ihre Unterfunktion auf (Beispiel folgt). Wenn Funktion3 (aufgerufen in Funktion2) 0 zurück gibt möchte ich dass Funktion1 sofort zurückkehrt.<br />
Mein erster Ansatz war irgendwie manuell den Konstruktor aufzurufen, aber ich glaube das ist keine so grandiose Idee <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 />
Mein zweiter Ansatz wäre jetzt in Funktion1 einen try()catch() Block zu basteln in etwa so:</p>
<pre><code class="language-cpp">class Test
{
public:
  void func1()
  {
    try
    {
      func2();
    }
    catch (int val)
    {
    }
  }
private:
  void func2()
  {
    if (!func3())
      throw 0;
  }
  int func3()
  {
    return 0;
  }
};
</code></pre>
<p>Kann man das so machen? Oder gibts für solche Fälle in C++ schon eine Art &quot;extra Routine&quot;? Denn im Prinzip missbraucht man hier ja eine Exception um sich &quot;durch den Stack nach oben zu werfen&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Edit: Anmerkung:<br />
Es handelt sich bei realen Problemen natürlich um mehr als drei Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282209/klassenfunktion-beenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 07:18:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282209.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Feb 2011 23:02:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenfunktion beenden on Tue, 15 Feb 2011 23:14:21 GMT]]></title><description><![CDATA[<p>Guten,</p>
<p>ich habe innerhalb einer Klasse eine Funktion1, Funktion2 und Funktion3. Jede Funktion ruft ihre Unterfunktion auf (Beispiel folgt). Wenn Funktion3 (aufgerufen in Funktion2) 0 zurück gibt möchte ich dass Funktion1 sofort zurückkehrt.<br />
Mein erster Ansatz war irgendwie manuell den Konstruktor aufzurufen, aber ich glaube das ist keine so grandiose Idee <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 />
Mein zweiter Ansatz wäre jetzt in Funktion1 einen try()catch() Block zu basteln in etwa so:</p>
<pre><code class="language-cpp">class Test
{
public:
  void func1()
  {
    try
    {
      func2();
    }
    catch (int val)
    {
    }
  }
private:
  void func2()
  {
    if (!func3())
      throw 0;
  }
  int func3()
  {
    return 0;
  }
};
</code></pre>
<p>Kann man das so machen? Oder gibts für solche Fälle in C++ schon eine Art &quot;extra Routine&quot;? Denn im Prinzip missbraucht man hier ja eine Exception um sich &quot;durch den Stack nach oben zu werfen&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Edit: Anmerkung:<br />
Es handelt sich bei realen Problemen natürlich um mehr als drei Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2021622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2021622</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 15 Feb 2011 23:14:21 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenfunktion beenden on Wed, 16 Feb 2011 07:36:00 GMT]]></title><description><![CDATA[<p>spricht was dagegen, allen funcs bool als Returnwert zu geben? Exeptions zu schmeissen zur Ablaufsteuerung (es sei denn es handelt sich dabei um &quot;Fehler&quot;zustände) finde ich fragwürdig. Dann wäre ein einfaches <code>if(!func2()) return;</code> ausreichend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2021656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2021656</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Wed, 16 Feb 2011 07:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenfunktion beenden on Wed, 16 Feb 2011 20:11:11 GMT]]></title><description><![CDATA[<p>Ja, wie erwähnt sprechen sehr viele Funktionen die sich gegenseitig aufrufen dagegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Natürlich ist das Ganze auch mit Rückgabewerten möglich, aber genau das soll ja vermieden werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2021973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2021973</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 16 Feb 2011 20:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenfunktion beenden on Thu, 17 Feb 2011 08:07:23 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Ja, wie erwähnt sprechen sehr viele Funktionen die sich gegenseitig aufrufen dagegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Natürlich ist das Ganze auch mit Rückgabewerten möglich, aber genau das soll ja vermieden werden!</p>
</blockquote>
<p>Warum genau soll das vermieden werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022099</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 17 Feb 2011 08:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenfunktion beenden on Fri, 18 Feb 2011 05:09:47 GMT]]></title><description><![CDATA[<p>Für mich hört sich das nach der grundlegenden Entwickleraufgabe an. Das darf man niemals mit Exceptions machen, sondern muß klare Ausgänge und Abläufe definieren und umsetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2022562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2022562</guid><dc:creator><![CDATA[mareb]]></dc:creator><pubDate>Fri, 18 Feb 2011 05:09:47 GMT</pubDate></item></channel></rss>