<?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[Klasseninstanz global verfügbar machen]]></title><description><![CDATA[<p>Ich möchte folgendes erreichen: Ich habe eine Klasseninstanz angelegt, welche ein Objekt einer anderen Klasse erstellt und dieses zweite Klassenobjekt erstellt wieder ein anderes Objekt. Dieses dritte Objekt benötigt Daten vom ersten Objekt. Ich frage mich nun wie man sowas egtl am Geschicktesten macht. Im Code sieht das irgendwie so aus:</p>
<pre><code>class ErsteKlasse{

public:
    IrgendeinContainer* foo(){
        return &amp;IrgendeinContainerInstanz;
    }

    void bar(){
        ZweiteKlasse *InstanzZweiteKlasse = new ZweiteKlasse();
    }

};

class ZweiteKlasse{
public:
    ZweiteKlasse(){
        DritteKlasse* blubb = new DritteKlasse();
        blubb-&gt;BraucheFunktionVonErsterKlasse();
    }

};

class DritteKlasse{
public:
    void BraucheFunktionVonErsterKlasse(){
        //Diese Funktion muss auf die Funktion der ErstenKlasse zugreifen
        ZeigeraufIrgendeinContainerVariable = ErsteKlasse::foo();
    }

};

main{

    ErsteKlasse* bla = new ErsteKlasse();
    bla-&gt;bar();

}
</code></pre>
<p>So in der Art soll das funktionieren. Konkret geht es um folgendes: Ich verwende Qt zur Erstellung von GUIs. Ich habe dabei ein Hauptfenster und von dort aus werden weitere Fenster erstellt um Eingaben vom Benutzer abzufragen. Die Klassen oben repräsentieren eben diese Fenster. Ich überlege nun wie man es besten regelt, dass im 3. Fenster (DritteKlasse) Funktionen vom Hauptfenster (ErsteKlasse) verwendet werden können.</p>
<p>Bisher hab ich das immer so gehandhabt, dass ich immer einen Zeiger auf das übergeordnete Fenster übergeben habe oder eben einen Zeiger auf das Hauptfenster, das scheint mir doch sehr umständlich und irgendwie diletantisch <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>Bisher habe ich mir überlegt einfach eine statische Variable anzulegen in der Form:</p>
<pre><code>class ErsteKlasse{

public:
    static ErsteKlasse* Hauptfenster

    ErsteKlasse(){
        Hauptfenster = this;
    }

     IrgendeinContainer* foo(){
        return &amp;IrgendeinContainerInstanz;
    }

    void bar(){
        ZweiteKlasse *InstanzZweiteKlasse = new ZweiteKlasse();
    }

};
</code></pre>
<p>Es gibt ja garantiert nur ein Hauptfenster, so würd man ja schonmal auf die entsprechenden Methoden von überall zugreifen können. Gibts da noch simplere oder bessere Möglichkeiten?</p>
<p>Schöne Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323306/klasseninstanz-global-verfügbar-machen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 06:51:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323306.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Jan 2014 13:43:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 13:43:11 GMT]]></title><description><![CDATA[<p>Ich möchte folgendes erreichen: Ich habe eine Klasseninstanz angelegt, welche ein Objekt einer anderen Klasse erstellt und dieses zweite Klassenobjekt erstellt wieder ein anderes Objekt. Dieses dritte Objekt benötigt Daten vom ersten Objekt. Ich frage mich nun wie man sowas egtl am Geschicktesten macht. Im Code sieht das irgendwie so aus:</p>
<pre><code>class ErsteKlasse{

public:
    IrgendeinContainer* foo(){
        return &amp;IrgendeinContainerInstanz;
    }

    void bar(){
        ZweiteKlasse *InstanzZweiteKlasse = new ZweiteKlasse();
    }

};

class ZweiteKlasse{
public:
    ZweiteKlasse(){
        DritteKlasse* blubb = new DritteKlasse();
        blubb-&gt;BraucheFunktionVonErsterKlasse();
    }

};

class DritteKlasse{
public:
    void BraucheFunktionVonErsterKlasse(){
        //Diese Funktion muss auf die Funktion der ErstenKlasse zugreifen
        ZeigeraufIrgendeinContainerVariable = ErsteKlasse::foo();
    }

};

main{

    ErsteKlasse* bla = new ErsteKlasse();
    bla-&gt;bar();

}
</code></pre>
<p>So in der Art soll das funktionieren. Konkret geht es um folgendes: Ich verwende Qt zur Erstellung von GUIs. Ich habe dabei ein Hauptfenster und von dort aus werden weitere Fenster erstellt um Eingaben vom Benutzer abzufragen. Die Klassen oben repräsentieren eben diese Fenster. Ich überlege nun wie man es besten regelt, dass im 3. Fenster (DritteKlasse) Funktionen vom Hauptfenster (ErsteKlasse) verwendet werden können.</p>
<p>Bisher hab ich das immer so gehandhabt, dass ich immer einen Zeiger auf das übergeordnete Fenster übergeben habe oder eben einen Zeiger auf das Hauptfenster, das scheint mir doch sehr umständlich und irgendwie diletantisch <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>Bisher habe ich mir überlegt einfach eine statische Variable anzulegen in der Form:</p>
<pre><code>class ErsteKlasse{

public:
    static ErsteKlasse* Hauptfenster

    ErsteKlasse(){
        Hauptfenster = this;
    }

     IrgendeinContainer* foo(){
        return &amp;IrgendeinContainerInstanz;
    }

    void bar(){
        ZweiteKlasse *InstanzZweiteKlasse = new ZweiteKlasse();
    }

};
</code></pre>
<p>Es gibt ja garantiert nur ein Hauptfenster, so würd man ja schonmal auf die entsprechenden Methoden von überall zugreifen können. Gibts da noch simplere oder bessere Möglichkeiten?</p>
<p>Schöne Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379482</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Sat, 25 Jan 2014 13:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 14:30:10 GMT]]></title><description><![CDATA[<p>Übergib im Constructor Referenzen oder pointer auf die Oberklasse.</p>
<pre><code>class Erstes;

class Zweites
{
public:
    Zweites(Erstes* er) : erstes(er){ }

private:
    Erstes* erstes;
};

class Erstes
{
public:
    void foo()
    {
        Zweites* zw = new Zweites(this);
        // ...
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2379496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379496</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Sat, 25 Jan 2014 14:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 16:20:50 GMT]]></title><description><![CDATA[<p>Marthog schrieb:</p>
<blockquote>
<p>Übergib im Constructor Referenzen oder pointer auf die Oberklasse.</p>
<pre><code>class Erstes;

class Zweites
{
public:
    Zweites(Erstes* er) : erstes(er){ }

private:
    Erstes* erstes;
};

class Erstes
{
public:
    void foo()
    {
        Zweites* zw = new Zweites(this);
        // ...
    }
};
</code></pre>
</blockquote>
<p>Wie gesagt so hab ich das bisher immer gemacht, ich will aber vermeiden den Pointer durch alle Klassen durchzuschleppen. Da muss es doch bestimmt einer bessere Möglichkeit geben <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2379524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379524</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Sat, 25 Jan 2014 16:20:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 17:16:55 GMT]]></title><description><![CDATA[<p>Freddy_Kay schrieb:</p>
<blockquote>
<p>Da muss es doch bestimmt einer bessere Möglichkeit geben <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>
</blockquote>
<p>Mir wäre keine bekannt. Global machen ist auf jeden Fall keine bessere Möglichkeit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379533</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 25 Jan 2014 17:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 17:40:41 GMT]]></title><description><![CDATA[<p>Static Methoden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379534</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Sat, 25 Jan 2014 17:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 17:55:30 GMT]]></title><description><![CDATA[<p>Namenloser324 schrieb:</p>
<blockquote>
<p>Static Methoden?</p>
</blockquote>
<p>ja daran hatte ich auch gedacht. Hab das prinzip allerdings nicht vollends verstanden. Würde eine static Methode in der Lage sein eine nicht statische Variable aus der Klasseninstanz zurückzugeben ohne die eigentliche Instanz zu kennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2379541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379541</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Sat, 25 Jan 2014 17:55:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klasseninstanz global verfügbar machen on Sat, 25 Jan 2014 18:03:58 GMT]]></title><description><![CDATA[<p>Freddy_Kay schrieb:</p>
<blockquote>
<p>Würde eine static Methode in der Lage sein eine nicht statische Variable aus der Klasseninstanz zurückzugeben ohne die eigentliche Instanz zu kennen?</p>
</blockquote>
<p>Sicher <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2379546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2379546</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 25 Jan 2014 18:03:58 GMT</pubDate></item></channel></rss>