<?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[Erzeugen eines global verfügbaren Objekts innerhalb einer Funktion]]></title><description><![CDATA[<p>Hallo werte User,</p>
<p>ich bin neu hier und habe ein kleines Problem, für welches ich leider noch keine Lösung erkennen kann. Vielleicht kann mir hier jemand helfen. <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="🙂"
    /></p>
<p><strong>Ausganspunkt:</strong> ich arbeite an einem C++-Projekt, welches grundlegende Funktionalitäten unterschiedlicher Sprachsoftware (z.B. Microsoft SAPI, etc.) in einer MFC-Anwendung implementiert. Zugrunde liegen die Dialog-Klasse (das Anwendungsfenster), sowie Klassen für die jeweiligen Spracherkenner/Sprachsynthesizer (im Nachhinein &quot;E/S&quot; genannt).</p>
<p><strong>Problem:</strong> um Ressourcen zu sparen, will ich vermeiden, Objekte aller E/S-Klassen global beim Programstart anzulegen, da zur Laufzeit zu einem Zeitpunkt immer nur ein E/S-Objekt genutzt wird. Die verschiedenen E/S-Objekte müssen allerdings während der Laufzeit dynamisch gegeneinaner austauschbar sein. Dazu Ich will nun während der Laufzeit des Programms dynamisch (via Button-Klick, also in einer Funktion) ein neues Objekt einer E/S-Klasse dynmisch erzeugen und das vorherige Objekt zerstören. Die Objekte müssen nach Ihrer Instanzierung innerhalb einer Memberfunktion des Dialogs allerdings global auch für andere Funktionen des Dialogs verfügbar sein. Und genau <strong>DAS</strong> bekomme ich ich nicht hin. Als kleine Veranschaulichung:</p>
<pre><code>class KlasseA
{
     [...]
};

class KlasseB
{
     [...]
};

class Dialog
{
     [...]
     void OnBnClickedBtn1() {
          // existentes ObjektA (von KlasseA) zerstören
          // ObjektB (von KlasseB) instanzieren
     }

     void OnBnClickedBtn2() {
          // auf Funktionen von ObjektB zugreifen
     }
};
</code></pre>
<p>Wenn ich ein Objekt erstelle, ist es immer nur lokal in der übergeordneten Funktion existent. Mag sein, dass es eine einfache Lösung dafür gibt, aber ich stehe komplett auf dem Schlauch. Für jeden hilfreichen Hinweis bin ich unendlich dankbar! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265053/erzeugen-eines-global-verfügbaren-objekts-innerhalb-einer-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 09:34:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265053.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Apr 2010 08:33:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erzeugen eines global verfügbaren Objekts innerhalb einer Funktion on Sat, 17 Apr 2010 08:33:56 GMT]]></title><description><![CDATA[<p>Hallo werte User,</p>
<p>ich bin neu hier und habe ein kleines Problem, für welches ich leider noch keine Lösung erkennen kann. Vielleicht kann mir hier jemand helfen. <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="🙂"
    /></p>
<p><strong>Ausganspunkt:</strong> ich arbeite an einem C++-Projekt, welches grundlegende Funktionalitäten unterschiedlicher Sprachsoftware (z.B. Microsoft SAPI, etc.) in einer MFC-Anwendung implementiert. Zugrunde liegen die Dialog-Klasse (das Anwendungsfenster), sowie Klassen für die jeweiligen Spracherkenner/Sprachsynthesizer (im Nachhinein &quot;E/S&quot; genannt).</p>
<p><strong>Problem:</strong> um Ressourcen zu sparen, will ich vermeiden, Objekte aller E/S-Klassen global beim Programstart anzulegen, da zur Laufzeit zu einem Zeitpunkt immer nur ein E/S-Objekt genutzt wird. Die verschiedenen E/S-Objekte müssen allerdings während der Laufzeit dynamisch gegeneinaner austauschbar sein. Dazu Ich will nun während der Laufzeit des Programms dynamisch (via Button-Klick, also in einer Funktion) ein neues Objekt einer E/S-Klasse dynmisch erzeugen und das vorherige Objekt zerstören. Die Objekte müssen nach Ihrer Instanzierung innerhalb einer Memberfunktion des Dialogs allerdings global auch für andere Funktionen des Dialogs verfügbar sein. Und genau <strong>DAS</strong> bekomme ich ich nicht hin. Als kleine Veranschaulichung:</p>
<pre><code>class KlasseA
{
     [...]
};

class KlasseB
{
     [...]
};

class Dialog
{
     [...]
     void OnBnClickedBtn1() {
          // existentes ObjektA (von KlasseA) zerstören
          // ObjektB (von KlasseB) instanzieren
     }

     void OnBnClickedBtn2() {
          // auf Funktionen von ObjektB zugreifen
     }
};
</code></pre>
<p>Wenn ich ein Objekt erstelle, ist es immer nur lokal in der übergeordneten Funktion existent. Mag sein, dass es eine einfache Lösung dafür gibt, aber ich stehe komplett auf dem Schlauch. Für jeden hilfreichen Hinweis bin ich unendlich dankbar! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884148</guid><dc:creator><![CDATA[PeteC]]></dc:creator><pubDate>Sat, 17 Apr 2010 08:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to Erzeugen eines global verfügbaren Objekts innerhalb einer Funktion on Sat, 17 Apr 2010 08:41:45 GMT]]></title><description><![CDATA[<p>Je nachdem wo das Objekt überall sichtbar sein muss, musst du es deklarieren.</p>
<pre><code class="language-cpp">class InterfaceOfES
{
   // [...]
};

class KlasseA : public InterfaceOfES
{
    // [...]
};

class KlasseB : public InterfaceOfES
{
    // [...]
};

class Dialog
{
     // nur in Dialog nötig
     InterfaceOfES* theESInterface
     [...]
     void OnBnClickedBtn1() {
          // wenn theESInterface auf Objekt zeigt
          delete theESInterface
          // ObjektB (von KlasseB) instanzieren
          theESInterface = new B();
     }

     void OnBnClickedBtn2() {
          // auf Funktionen von theESInterface zugreifen
     }
};
</code></pre>
<p>Wenn es wirklich global nötig ist, dann entweder (bevorzugt) über Übergabeparameter arbeiten, oder das Objekt global, sprich außerhalb der Klasse deklarieren (meistens schlechter Stil)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884151</guid><dc:creator><![CDATA[Bliblablub]]></dc:creator><pubDate>Sat, 17 Apr 2010 08:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Erzeugen eines global verfügbaren Objekts innerhalb einer Funktion on Sat, 17 Apr 2010 08:46:56 GMT]]></title><description><![CDATA[<p>Hmm... das schaut aus, als könnte es wirklich so gehen. Ich probier es mal aus und melde mich dann mit dem Ergebnis. Vielen Dank schonmal für die schnelle Antwort! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884155</guid><dc:creator><![CDATA[PeteC]]></dc:creator><pubDate>Sat, 17 Apr 2010 08:46:56 GMT</pubDate></item></channel></rss>