<?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[typedef This?]]></title><description><![CDATA[<p>Hi,</p>
<p>nutzt ihr ein typedef, um die eigene Klasse zu bezeichnen?</p>
<p>Viel mit namespaces zu arbeiten kann Sinn ergeben. In UI-Projekten werden aber auch gerne eindeutige, aber lange Bezeichner verwendet. Es kann da durchaus auch mal 5-6 CamelCase-Blöcke geben. Wenn man dann Signale/Slots verwendet und auf Memberfunktionen referenzieren muss, ist das eklig. Z.B. in QT:</p>
<pre><code class="language-cpp">connect(this, &amp;SomeUnfortunatelyLongClassName::signal, this, &amp;SomeUnfortunatelyLongClassName::slot);
</code></pre>
<p>Wenn ich dann 12 connects hab, wird es noch lästiger.<br />
Man könnte sich jedoch ein typedef im UI-Bereich angewöhnen:</p>
<pre><code class="language-cpp">class SomeUnfortunatelyLongClassName
{
    typedef SomeUnfortunatelyLongClassName This; // oder ein andrer Name
</code></pre>
<p>und den dann nutzen. Man könnte sich auch ein typedef für Parent bei Vererbung angewöhnen, das wäre ja auch praktisch, aber ist erstmal ne andere Diskussion.</p>
<p>Und wenn man den Klassennamen ändert, braucht man die connects nicht alle ändern (ja, ist ein replace all, aber weniger replacements sind weniger potentielle Fehlersetzungen).</p>
<p>Nutzt jemand so ein typedef This? STL-Implementierungen haben's ja auch. VC2013 hat ein typedef _MyIter für den vector-iterator (an der Stelle mit nur einem Template-Argument, könnte man auch stets dazu schreiben).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336376/typedef-this</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 11:19:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336376.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Jan 2016 15:34:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typedef This? on Mon, 18 Jan 2016 15:35:02 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nutzt ihr ein typedef, um die eigene Klasse zu bezeichnen?</p>
<p>Viel mit namespaces zu arbeiten kann Sinn ergeben. In UI-Projekten werden aber auch gerne eindeutige, aber lange Bezeichner verwendet. Es kann da durchaus auch mal 5-6 CamelCase-Blöcke geben. Wenn man dann Signale/Slots verwendet und auf Memberfunktionen referenzieren muss, ist das eklig. Z.B. in QT:</p>
<pre><code class="language-cpp">connect(this, &amp;SomeUnfortunatelyLongClassName::signal, this, &amp;SomeUnfortunatelyLongClassName::slot);
</code></pre>
<p>Wenn ich dann 12 connects hab, wird es noch lästiger.<br />
Man könnte sich jedoch ein typedef im UI-Bereich angewöhnen:</p>
<pre><code class="language-cpp">class SomeUnfortunatelyLongClassName
{
    typedef SomeUnfortunatelyLongClassName This; // oder ein andrer Name
</code></pre>
<p>und den dann nutzen. Man könnte sich auch ein typedef für Parent bei Vererbung angewöhnen, das wäre ja auch praktisch, aber ist erstmal ne andere Diskussion.</p>
<p>Und wenn man den Klassennamen ändert, braucht man die connects nicht alle ändern (ja, ist ein replace all, aber weniger replacements sind weniger potentielle Fehlersetzungen).</p>
<p>Nutzt jemand so ein typedef This? STL-Implementierungen haben's ja auch. VC2013 hat ein typedef _MyIter für den vector-iterator (an der Stelle mit nur einem Template-Argument, könnte man auch stets dazu schreiben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483763</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 18 Jan 2016 15:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to typedef This? on Mon, 18 Jan 2016 15:45:56 GMT]]></title><description><![CDATA[<p>Nein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483764</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 18 Jan 2016 15:45:56 GMT</pubDate></item><item><title><![CDATA[Reply to typedef This? on Mon, 18 Jan 2016 15:54:12 GMT]]></title><description><![CDATA[<p>Meine Qt-Verbindungsaufrufe sehen so aus:</p>
<pre><code class="language-cpp">connect(this, SIGNAL(signalName(int)), this, SLOT(slotName(int)));
</code></pre>
<p>Ein typedef brauche ich da nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483768</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 18 Jan 2016 15:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to typedef This? on Mon, 18 Jan 2016 16:00:18 GMT]]></title><description><![CDATA[<p>Das ist die alte Schreibweise. Die neue ist zu bevorzugen, weil man dort eine compile-time-Typsicherheit hat. Zudem erfordert ein Lambda-Slot ebenfalls die Schreibweise ohne SIGNAL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483770</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 18 Jan 2016 16:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to typedef This? on Mon, 18 Jan 2016 17:16:11 GMT]]></title><description><![CDATA[<p>Nein, ich nutze auch kein typedef.</p>
<p>Eisflamme schrieb:</p>
<blockquote>
<p>Das ist die alte Schreibweise. Die neue ist zu bevorzugen, weil man dort eine compile-time-Typsicherheit hat. Zudem erfordert ein Lambda-Slot ebenfalls die Schreibweise ohne SIGNAL.</p>
</blockquote>
<p>Geht meines Wissens erst ab Qt5.<br />
Meinst Du folgende Schreibweise mit Lambda-Slot?</p>
<pre><code>connect( object, &amp;MyObject::mySignal, [=]() {} );
</code></pre>
<p>Davon wurde mir abgeraten, sofern man im Slot auf <s>(Qt)</s> Objekte zugreift. Es kann u.U. sein, dass das Objekt zwischenzeitlich gelöscht wurde.</p>
<p>Und noch eine Anmerkung: Ich schreibe selten die expliziten Signal-Slot-Verbindungen hin, die Fähigkeit die Signal-Slots automatisch miteinander zu verbinden finde ich ganz praktisch.<br />
<a href="http://doc.qt.io/qt-4.8/designer-using-a-ui-file.html#automatic-connections" rel="nofollow">http://doc.qt.io/qt-4.8/designer-using-a-ui-file.html#automatic-connections</a><br />
(Qt meldet einen Fehler, falls der Entwickler sich vertippen sollte.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483780</guid><dc:creator><![CDATA[__jb__]]></dc:creator><pubDate>Mon, 18 Jan 2016 17:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to typedef This? on Tue, 19 Jan 2016 10:57:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ja, mit der Lambdaschreibweise muss man aufpassen. Nichtsdestotrotz kann sie sehr praktisch sein, beispielsweise, wenn man einfach eine andere Funktion aufruft und nicht direkt auf Attribute zugreift.</p>
<p>Und ja, ist natürlich erst ab neueren QT-Versionen möglich. Aber dann ist die neue Schreibweise eben aus o.g. Gründen meistens besser.</p>
<p>Klar melden sich Fehler zur Laufzeit, wenn man falsch verbindet, aber ich bevorzuge den Fehler zur Kompilierzeit.</p>
<ul>
<li></li>
</ul>
<p>Ist aber eigentlich auch überhaupt nicht das Thema hier. Spricht denn irgendwas gegen so ein <code>typedef</code> ? Ich fände es in vielen Situationen praktisch. Vielleicht übersehe ich aber auch Nachteile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2483868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2483868</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Tue, 19 Jan 2016 10:57:48 GMT</pubDate></item></channel></rss>