<?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[wo lege ich eine instanz einer klasse an?]]></title><description><![CDATA[<p>hi Leute<br />
Ich möchte von allen Fenstern (also Hauptfenster und Childs) auf eine Instanz (Graph) einer Klasse (CGraph) zugreifen können.<br />
Jetzt weiss ich nicht, wo ich die Instanz erzeugen soll.</p>
<p><strong>Möglichkeiten:</strong><br />
(1)</p>
<pre><code class="language-cpp">class CppAppWnd{ 
... 
public: CGraph Graph; 
... 
};
</code></pre>
<p>Wenn es eine Member der Haupt-Fenster-Klasse ist, hab ich aber Mühe, die Klasse &quot;anzusteuern&quot;, da die Instanz der Haupt-Fenster-Klasse im &quot;Start-File&quot; (-siehe unten-) erzeugt wird. Deshalb habe ich diese Instanz im Child-Wnd nicht zur Verfügung.</p>
<p>(2)</p>
<pre><code class="language-cpp">//im header graph.h
class CGraph{
...
};
static CGraph Graph;
</code></pre>
<p>So kann ich vom Hauptfenster zugreifen, d.h. verändern und abrufen. Vom Child-window her geht das nicht, ich erhalte also im CScrollWnd.cpp bei Abfragen von Graph immer die Standardwerte (also zb. &quot;&quot; bei einem string).</p>
<p>(3)</p>
<pre><code class="language-cpp">//..?..
</code></pre>
<p>Das &quot;Start-File&quot; meines Projekts: <a href="http://www.xmail.net/nate7/files/Source_WinMainStart_cpp.html" rel="nofollow">http://www.xmail.net/nate7/files/Source_WinMainStart_cpp.html</a><br />
Die ganze übersicht: [url]<a href="http://www.xmail.net/nate7/sourcecode_all.html%5Burl%5D" rel="nofollow">http://www.xmail.net/nate7/sourcecode_all.html[url]</a><br />
(schönes design gibts aber nur auf den parent-sites.. :D)</p>
<p>dankeschön für tipps!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/90760/wo-lege-ich-eine-instanz-einer-klasse-an</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 03:10:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/90760.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Nov 2004 20:21:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Mon, 01 Nov 2004 20:21:24 GMT]]></title><description><![CDATA[<p>hi Leute<br />
Ich möchte von allen Fenstern (also Hauptfenster und Childs) auf eine Instanz (Graph) einer Klasse (CGraph) zugreifen können.<br />
Jetzt weiss ich nicht, wo ich die Instanz erzeugen soll.</p>
<p><strong>Möglichkeiten:</strong><br />
(1)</p>
<pre><code class="language-cpp">class CppAppWnd{ 
... 
public: CGraph Graph; 
... 
};
</code></pre>
<p>Wenn es eine Member der Haupt-Fenster-Klasse ist, hab ich aber Mühe, die Klasse &quot;anzusteuern&quot;, da die Instanz der Haupt-Fenster-Klasse im &quot;Start-File&quot; (-siehe unten-) erzeugt wird. Deshalb habe ich diese Instanz im Child-Wnd nicht zur Verfügung.</p>
<p>(2)</p>
<pre><code class="language-cpp">//im header graph.h
class CGraph{
...
};
static CGraph Graph;
</code></pre>
<p>So kann ich vom Hauptfenster zugreifen, d.h. verändern und abrufen. Vom Child-window her geht das nicht, ich erhalte also im CScrollWnd.cpp bei Abfragen von Graph immer die Standardwerte (also zb. &quot;&quot; bei einem string).</p>
<p>(3)</p>
<pre><code class="language-cpp">//..?..
</code></pre>
<p>Das &quot;Start-File&quot; meines Projekts: <a href="http://www.xmail.net/nate7/files/Source_WinMainStart_cpp.html" rel="nofollow">http://www.xmail.net/nate7/files/Source_WinMainStart_cpp.html</a><br />
Die ganze übersicht: [url]<a href="http://www.xmail.net/nate7/sourcecode_all.html%5Burl%5D" rel="nofollow">http://www.xmail.net/nate7/sourcecode_all.html[url]</a><br />
(schönes design gibts aber nur auf den parent-sites.. :D)</p>
<p>dankeschön für tipps!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/642510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642510</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Mon, 01 Nov 2004 20:21:24 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Mon, 01 Nov 2004 21:24:48 GMT]]></title><description><![CDATA[<p>Ich würde eine Singleton-Klasse erstellen, die ein Objekt der Klasse CGraph kapselt.</p>
<pre><code class="language-cpp">//Header
class TheOneAndOnlyGraph
{
public:
  static bool Init();

  static CGraph&amp; RequestGraph();

private:
  TheOneAndOnlyGraph(const TheOneAndOnlyGraph&amp;){};
  TheOneAndOnlyGraph&amp; operator =(const TheOneAndOnlyGraph&amp;){};
  TheOneAndOnlyGraph()
  {}
  ~TheOneAndOnlyGraph()
  {}
private:
  static TheOneAndOnlyGraph *ms_pSingleton;
  CGraph m_Graph;
};
</code></pre>
<pre><code class="language-cpp">//Source
TheOneAndOnlyGraph *TheOneAndOnlyGraph::ms_pSingleton = NULL;

bool TheOneAndOnlyGraph::Init()
{
  // Does the singleton already exist?
  if( ms_pSingleton )
    true;

  ms_pSingleton = new TheOneAndOnlyGraph();

  if( !ms_pSingleton )
    return false;

  //Additional Code..
}

CGraph&amp; TheOneAndOnlyGraph::RequestGraph()
{
  assert(ms_pSingleton);
  return ms_pSingleton-&gt;m_Graph;
}
</code></pre>
<p>Mit einem Singleton hast du eine Klasse auf die du praktisch von überall zugreifen kannst; so ähnlich wie eine globale Variable eben, nur mit Methoden der OOP implementiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/642534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/642534</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Mon, 01 Nov 2004 21:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Tue, 02 Nov 2004 18:26:17 GMT]]></title><description><![CDATA[<p>dankeschön! sieht nicht schlecht aus.. werds grad ausprobieren<br />
aber.. ginge das nicht auch einfacher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643088</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Tue, 02 Nov 2004 18:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Tue, 02 Nov 2004 21:25:31 GMT]]></title><description><![CDATA[<p><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="🙂"
    /> wunderbar!! das funktioniert ja (okee.. sonst hättest du es wohl nicht gepostet..:D)</p>
<p>nur noch ein detail:</p>
<pre><code class="language-cpp">TheOneAndOnlyGraph::RequestGraph().getPathName();
</code></pre>
<p>es widerstrebt mir etwas, jedes mal sone lange Geschichte zu schreiben (das mach ich jetzt bei jedem Aufruf von &quot;Graph&quot;)<br />
ist das 1. nötig, 2. sinnvoll, 3. nicht unglaublich langsam?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643215</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Tue, 02 Nov 2004 21:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Tue, 02 Nov 2004 21:51:54 GMT]]></title><description><![CDATA[<p>1.) Wenn du ein Singleton verwenden willst, dann schon.<br />
2.) Sinnvoller als &quot;C-like&quot; globale Variablen würde ich sagen.<br />
3.) Sollte eigentlich ziemlich schnell sein. Erstens wird ja eine Referenz zurückgegeben und zweitens ist es eine einzeilige Inline-Funktion (zumindest im Release-Modus).</p>
<p>Du kannst zwischen zwei Möglichkeiten wählen wenn dir solche Funktionsaufrufe zu lang sind.</p>
<p>1.) Gleich zu Beginn bevor du das Objekt benötigst deklarierst du eine Referenzvariable, die du mit der Singleton-Klasse initialisierst:</p>
<pre><code class="language-cpp">Graph &amp;graph = TheOneAndOnlyGraph::RequestGraph();

graph.getPathName();
</code></pre>
<p>2.) Du versuchst einfach einen kürzeren Namen für die Singleton-Klasse und die Getter-Funktion auszuwählen. <strong>TheOneAndOnlyGraph</strong> war eigentlich etwas übertrieben gewählt; ich hätte nicht gedacht, dass du es 1:1 übernimmst <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>
<pre><code class="language-cpp">//Vielleicht ist folgendes besser:
GraphManager::Graph().getPathName();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/643232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643232</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Tue, 02 Nov 2004 21:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Tue, 02 Nov 2004 22:21:23 GMT]]></title><description><![CDATA[<p>Wo wird bei deinem Code delete aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643240</guid><dc:creator><![CDATA[delete?!]]></dc:creator><pubDate>Tue, 02 Nov 2004 22:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 09:25:49 GMT]]></title><description><![CDATA[<p>delete?! schrieb:</p>
<blockquote>
<p>Wo wird bei deinem Code delete aufgerufen?</p>
</blockquote>
<p>Gegenfrage, wo wird &quot;new&quot; aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643385</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Wed, 03 Nov 2004 09:25:49 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 10:11:24 GMT]]></title><description><![CDATA[<p>MiC++ha schrieb:</p>
<blockquote>
<p>Gegenfrage, wo wird &quot;new&quot; aufgerufen?</p>
</blockquote>
<p>ich würd mal sagen hier</p>
<p>Aziz schrieb:</p>
<blockquote>
<p>[cpp]<br />
[cpp]<br />
bool TheOneAndOnlyGraph::Init()<br />
{<br />
// Does the singleton already exist?<br />
if( ms_pSingleton )<br />
true;</p>
<p>ms_pSingleton = new TheOneAndOnlyGraph();</p>
<p>if( !ms_pSingleton )<br />
return false;</p>
<p>//Additional Code..<br />
}</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/643423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643423</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Wed, 03 Nov 2004 10:11:24 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 10:20:31 GMT]]></title><description><![CDATA[<p>Stimmt!<br />
Das hatte ich übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643431</guid><dc:creator><![CDATA[MiC++ha]]></dc:creator><pubDate>Wed, 03 Nov 2004 10:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 11:15:45 GMT]]></title><description><![CDATA[<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=Singleton#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=Singleton#Answ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/643473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643473</guid><dc:creator><![CDATA[fara.cs.]]></dc:creator><pubDate>Wed, 03 Nov 2004 11:15:45 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 14:54:44 GMT]]></title><description><![CDATA[<p>dankeschön für die antworten, speziell für den link!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5360">@Aziz</a>: ach weisst du, das mit dem TheOneAndOnlyGraph hat mir grad so gefallen, da hab ichs grad so übernommen.. <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="😉"
    /> (ist mal son richtig aussagekräftiger class-name)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643653</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Wed, 03 Nov 2004 14:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 18:18:22 GMT]]></title><description><![CDATA[<p>delete?! schrieb:</p>
<blockquote>
<p>Wo wird bei deinem Code delete aufgerufen?</p>
</blockquote>
<p>Eine sehr gute Frage <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>Eine Methode zu schreiben, welche die Instanz freigibt wäre empfehlenswert <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>
]]></description><link>https://www.c-plusplus.net/forum/post/643894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643894</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Wed, 03 Nov 2004 18:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 18:26:11 GMT]]></title><description><![CDATA[<p>oder die instanz mit dem schlüsselwort static erstellen wie in dem link gezeigt ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643902</guid><dc:creator><![CDATA[static]]></dc:creator><pubDate>Wed, 03 Nov 2004 18:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 18:38:07 GMT]]></title><description><![CDATA[<p>Natürlich, so kann man es auch implementieren. Der Vorteil meiner Version ist jedoch - sofern man es benötigt, dass man den Zeitpunkt der Konstruktion sowie den Zeitpunkt der Destruktion des Singletons kontrollieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643922</guid><dc:creator><![CDATA[Aziz]]></dc:creator><pubDate>Wed, 03 Nov 2004 18:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 18:41:53 GMT]]></title><description><![CDATA[<p>Genau <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/643927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643927</guid><dc:creator><![CDATA[:-))]]></dc:creator><pubDate>Wed, 03 Nov 2004 18:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to wo lege ich eine instanz einer klasse an? on Wed, 03 Nov 2004 20:40:53 GMT]]></title><description><![CDATA[<p>[edit][/edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/643976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/643976</guid><dc:creator><![CDATA[nate7]]></dc:creator><pubDate>Wed, 03 Nov 2004 20:40:53 GMT</pubDate></item></channel></rss>