<?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[this Pointer im Konstruktor einer abgeleiten Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bräuchte mal Hilfe bei folgendem Problem;</p>
<pre><code>class Base
{
...
};

class Derived : public Base
{
...
    Derived()
    {
        connect(xxx, SLOT(xxx(), this, SLOT(funktion())));
    }
...
void funktion();
};
</code></pre>
<p>Im Konstruktor von Derived benötige ich einen Pointer (this) auf eben jene Derived Klasse um eine Signal/Slot Verbindung mit QT einrichten zu können. Allerdings scheint dieser Pointer zu diesem Zeitpunkt noch nicht initialisiert zu sein und zeigt noch auf die Basisklasse Base.<br />
Base beinhaltet aber nicht die Funktion &quot;function&quot;, weshalb sich auch keine Verknüpfung einrichten lässt.</p>
<p>Einzige Lösung die ich bisher gefunden habe ist, sich eine Zwischenklasse mit allen nötigen Membern und Funktionen zu erstellen und dann in der eigentlichen Klasse Derived nur noch die Verknüpfungen zu erstellen.<br />
Das ganze finde ich ziemlich umständlich und unschön, daher die frage ob es einen besseren Weg gibt ?</p>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305818/this-pointer-im-konstruktor-einer-abgeleiten-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 12:25:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305818.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Jul 2012 13:33:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to this Pointer im Konstruktor einer abgeleiten Klasse on Mon, 09 Jul 2012 13:33:31 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bräuchte mal Hilfe bei folgendem Problem;</p>
<pre><code>class Base
{
...
};

class Derived : public Base
{
...
    Derived()
    {
        connect(xxx, SLOT(xxx(), this, SLOT(funktion())));
    }
...
void funktion();
};
</code></pre>
<p>Im Konstruktor von Derived benötige ich einen Pointer (this) auf eben jene Derived Klasse um eine Signal/Slot Verbindung mit QT einrichten zu können. Allerdings scheint dieser Pointer zu diesem Zeitpunkt noch nicht initialisiert zu sein und zeigt noch auf die Basisklasse Base.<br />
Base beinhaltet aber nicht die Funktion &quot;function&quot;, weshalb sich auch keine Verknüpfung einrichten lässt.</p>
<p>Einzige Lösung die ich bisher gefunden habe ist, sich eine Zwischenklasse mit allen nötigen Membern und Funktionen zu erstellen und dann in der eigentlichen Klasse Derived nur noch die Verknüpfungen zu erstellen.<br />
Das ganze finde ich ziemlich umständlich und unschön, daher die frage ob es einen besseren Weg gibt ?</p>
<p>Gruß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2231311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2231311</guid><dc:creator><![CDATA[Gnubbel]]></dc:creator><pubDate>Mon, 09 Jul 2012 13:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to this Pointer im Konstruktor einer abgeleiten Klasse on Mon, 09 Jul 2012 13:42:41 GMT]]></title><description><![CDATA[<p>hä?</p>
<p>sorry kollege, ich verstehe deine frage nicht so ganz.</p>
<p>der this zeiger ist eigentlich immer existent und nutzbar. innerhalb der initalisierungsliste wäre da die einzige ausnahme.</p>
<p>d.h. wenn du das so machst wie in deinem code beispiel, sollte alles klappen:</p>
<pre><code class="language-cpp">void connect(Derive * d){cout &lt;&lt; &quot;Zeiger&quot;;}
void connect(Derive d){cout &lt;&lt; &quot;Wert&quot;;}

class Base
{
};

class Derive
{
public:
    Derive()
    {
        connect(this); // geht, &quot;Zeiger&quot; wird ausgegeben
        connect(*this); // geht, aber &quot;Wert&quot; wird ausgegeben
    }
};
</code></pre>
<p>die frage ist nur, ob du die eigene kalsse zu dem zeitpunkt schon fertig initialisiert hast...</p>
<p>edit: falls das connect jedoch ein Base entgegen nimmt nur, dann kann das mit der methode aus derive nicht klappen. stichwort polymorphie und vererbung generell</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2231318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2231318</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 09 Jul 2012 13:42:41 GMT</pubDate></item><item><title><![CDATA[Reply to this Pointer im Konstruktor einer abgeleiten Klasse on Mon, 09 Jul 2012 13:53:06 GMT]]></title><description><![CDATA[<p>Der Fehler ist wohl eher in ...!<br />
Ist die Klasse in einem Header definiert?<br />
Wird der Header mit moc bearbeitet?<br />
Ist die Funktion als SLOT definiert?<br />
Enthält die Klasse sie eine Q_OBJECT-Deklaration?<br />
Ist die von QObjekt abgeleitet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2231327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2231327</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 09 Jul 2012 13:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to this Pointer im Konstruktor einer abgeleiten Klasse on Mon, 09 Jul 2012 13:58:57 GMT]]></title><description><![CDATA[<p>Oh man, was für ein Hänger <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>&quot;Q_OBJECT&quot; vergessen... und für sowas verschwendet man einen ganzen Nachmittag...<br />
ja Problem gelöst, danke für die Hilfe!;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2231330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2231330</guid><dc:creator><![CDATA[Gnubbel]]></dc:creator><pubDate>Mon, 09 Jul 2012 13:58:57 GMT</pubDate></item></channel></rss>