<?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[Klassen-Erzeugungs Assistent]]></title><description><![CDATA[<p>Hi zusammen,</p>
<p>da ich für ein Projekt jede Menge Datenstrukturen anlegen muss die alle dem Schema &quot;Ein-Haufen-Variablen- Plus-Noch-Mehr- Selektoren-Plus-Standardkonstruktoren- Plus-Grundlegende-Operatoren&quot; folgen habe ich versucht ein <a href="http://totekuehe.to.funpic.de/cca/" rel="nofollow">Skript</a> zu schreiben welches mir dann diese Klassen erzeugt.</p>
<p>Meine Bitte an Euch ist das mal zu sichten und zu kommentieren <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="🙂"
    /><br />
Vielleicht fallen Euch noch tolle Optionen ein die man da einbauen könnte oder Sachen die ich voll verbockt habe (kompilieren lässt es sich zumindest mit'm MSVC und gcc).</p>
<p>Danke im Voraus,<br />
Khadgar</p>
<p>Edit: War mir nicht sicher ob C++ oder Webzeugs. Bei Bedarf bitte verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119003/klassen-erzeugungs-assistent</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 18:24:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119003.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Aug 2005 13:39:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 13:39:59 GMT]]></title><description><![CDATA[<p>Hi zusammen,</p>
<p>da ich für ein Projekt jede Menge Datenstrukturen anlegen muss die alle dem Schema &quot;Ein-Haufen-Variablen- Plus-Noch-Mehr- Selektoren-Plus-Standardkonstruktoren- Plus-Grundlegende-Operatoren&quot; folgen habe ich versucht ein <a href="http://totekuehe.to.funpic.de/cca/" rel="nofollow">Skript</a> zu schreiben welches mir dann diese Klassen erzeugt.</p>
<p>Meine Bitte an Euch ist das mal zu sichten und zu kommentieren <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="🙂"
    /><br />
Vielleicht fallen Euch noch tolle Optionen ein die man da einbauen könnte oder Sachen die ich voll verbockt habe (kompilieren lässt es sich zumindest mit'm MSVC und gcc).</p>
<p>Danke im Voraus,<br />
Khadgar</p>
<p>Edit: War mir nicht sicher ob C++ oder Webzeugs. Bei Bedarf bitte verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859041</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 26 Aug 2005 13:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 13:46:33 GMT]]></title><description><![CDATA[<p>Ich mach mal einen Anfang:<br />
1. Die get-Funktionen sind nicht const-korrekt<br />
2. Copy-Ctor und Op= haben nicht die kanonische Signatur.<br />
3. Member werden nicht initialisiert.<br />
4. Die Semantik des Operator== ist für Value-Types nicht zu gebrauchen<br />
5. Der Op== ist nicht const-korrekt.</p>
<p>Und eine Frage: Warum um alles in der Welt schreibt man Klassen die für jedes Member eine Set- und eine Get-Funktion besitzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859050</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 26 Aug 2005 13:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 14:42:04 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Ich mach mal einen Anfang:<br />
1. Die get-Funktionen sind nicht const-korrekt</p>
</blockquote>
<p>D.h. ich müsste statt &quot;<em>inline typ get() { ... }</em>&quot; besser &quot;<em>inline typ get() const { ... }</em>&quot; setzen? Oder eher &quot;<em>inline const typ get() {...}</em>&quot;?<br />
Hab das jetzt vorsichtshalber als &quot;<em>inline const typ get() const {...}</em>&quot; gemacht. Das war dann das was du meintest? Oder sollte ich da noch zwischen Basisdatentypen und Zeigern etc. unterscheiden (also stört sich der Compiler am &quot;<em>const int</em>&quot;?)</p>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>2. Copy-Ctor und Op= haben nicht die kanonische Signatur.</p>
</blockquote>
<p>Um mal Google zu zitieren: &quot;Ergebnisse 1 - 2 von 2 für &quot;kanonische signatur&quot;. (0,02 Sekunden)&quot;: Was genau meinst du mit kanonischer Signatur?</p>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>3. Member werden nicht initialisiert.</p>
</blockquote>
<p>Du meinst <a href="http://www.volkard.de/vcppkold/die_initialisiererliste.html" rel="nofollow">diesen</a> (Danke Volkard!) Fall hier? Hmm. Irgendwie blicke ich da gerade nicht durch. Hat irgendwer da draußen eine Idee wie ich alle möglichen auftreten Typen berücksichtigen kann? Oder ist das garnicht notwendig?</p>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>4. Die Semantik des Operator== ist für Value-Types nicht zu gebrauchen</p>
</blockquote>
<p>Value-Types? Du meinst also ich sollte eigentlich alle Felder von beiden Operanden auf Gleichheit überprüfen statt das nur über die Speicheradressen zu machen? Klingt sinnvoll <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>HumeSikkins schrieb:</p>
<blockquote>
<p>5. Der Op== ist nicht const-korrekt.</p>
</blockquote>
<p>Öhm. Da reicht es doch aus &quot;<em>{typ&amp; rhs)</em>&quot; ein &quot;<em>{const typ&amp; rhs)</em>&quot; zu machen oder?</p>
<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Und eine Frage: Warum um alles in der Welt schreibt man Klassen die für jedes Member eine Set- und eine Get-Funktion besitzen?</p>
</blockquote>
<p>Weil ich jeden Member verändern und lesen können muss aber nicht public machen will? Hast du eine bessere Idee? Immer raus damit <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>Vielen Dank für die ganzen Anmerkungen. Soll ja schliesslich was brauchbares werden und ihr habt hier alle weit mehr Ahnung/Erfahrung mit C++ als ich <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>Gruß,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859090</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 26 Aug 2005 14:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 15:12:52 GMT]]></title><description><![CDATA[<p>Hab da jetzt mal ein Update gemacht in dem alle const-Probleme beseitigt sein sollten und der Operator == auch für Value-Typen funktionieren müsste.<br />
Bleiben noch die Fragen bezüglich der kanonischen Signatur des Copy-Ctors und der Initialisiererlisten.</p>
<p>Mehr Anmerkungen zum Tool?<br />
Fehlende sinnvolle Felder bezüglich der Header-Kommentare? Irgendwelche Operatoren die man eigentlich auch immer benötigt, ich aber aussen vor gelassen habe? Sinnvoll da noch eine Serialisierung zu implementieren? (Vielleicht als Option?!)</p>
<p>So long and thanks for all the fish *schiefflöt*,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859120</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 26 Aug 2005 15:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 15:29:22 GMT]]></title><description><![CDATA[<p>Ich finds relativ nervig, dass man keine Klasse ohne Member erstellen kann. Das mit den Selektoren würde ich per Häkchen auswählbar machen. Ne nette Option wäre es ausserdem, wenn das Ding doxygen-Kommentare erzeugen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859130</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Fri, 26 Aug 2005 15:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 15:52:19 GMT]]></title><description><![CDATA[<p>Hab das mit dem Häkchen für die Selektoren direkt mal implementiert :).<br />
War ja einfach *g*</p>
<p>Stand der Dinge:<br />
[1] Problem der kanonischen Signatur lösen.<br />
[2] Initialisierung der Member welche keine Basisdatentypen sind<br />
[3] Doxygen-Kommentare</p>
<p>Ich weiss leider immer noch nicht wo das Problem bzgl. [1] ist, weil ich nicht mal weiss was genau mit der kanonischen Signatur gemeint ist. Wie müsste diese also aussehen?</p>
<p>Was die Initialisierung komplexerer Member angeht hab ich schon eine Idee und werde die Morgen oder übermorgen Implementieren. Hierbei wird dann im Skript für jede Variable überprüft ob es sich hierbei um einen Basisdatentyp handelt und wenn dem nicht so ist wir die Parameter-Liste für diese Variable erfragt.<br />
Sollte doch so funktionieren, oder?</p>
<p>Was die Doxygen-Kommentare angeht, so werde ich mir diese Kommtarform die Tage auch mal ansehen. Chancen stehen aber sehr gut, dass ich das implementiere.</p>
<p>Sonst noch Vorschläge?<br />
Ich überlege ernsthaft noch Serialisierungs-Routinen zu implementieren. Gibt es etwas was dagegen spricht? Wie wäre das dann am besten zu machen? Wo aussen geht das ja so nett mittels &quot;<em>write((const char</em>)&amp;Obj, sizeof(&amp;Obj))*&quot;. Ich vermute mal das geht so direkt aus dem Objekt heraus wegen des this-Zeigers nicht. Andere Ideen?</p>
<p>Gruß und schönes Wochenende,<br />
Khadgar</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859142</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Fri, 26 Aug 2005 15:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 16:05:50 GMT]]></title><description><![CDATA[<p>Hallo,<br />
die kanonische Signatur des Copy-Ctors ist:</p>
<pre><code class="language-cpp">ClassName(const ClassName&amp; other);
</code></pre>
<p>Die des operator=:</p>
<pre><code class="language-cpp">ClassName&amp; operator=(const ClassName&amp; other);
</code></pre>
<p>Schließlich willst du in der Regel ja auch Kopien von temporären Objekten erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859150</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 26 Aug 2005 16:05:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 17:06:15 GMT]]></title><description><![CDATA[<p>Nett.</p>
<p>Denk mal über darüber nach, ob alles Inline sein muss, gerade<br />
bei Konstruktoren kann das imho nicht immer sinn machen.<br />
Zu dem sollte der Setter und Getter für variablen optional sein.<br />
m_itest für int test finde ich auch nicht gerade prikelnd, sollte<br />
auch eine Option sein, oder evtl. sogar einstellbar.</p>
<p>Das Ding generiert nur den Rumpf einer klasse,<br />
weitere Funktionen etc. kann man nicht hinzufügen.<br />
Das du unbekannte Typen mit NULL intialisierst find<br />
ich auch bedenkenswert, auserdem macht es sinn alles mit 0<br />
zu initialisieren ???</p>
<p>Btw. hab ich ein ähnliches Tool:<br />
<a href="http://phlox81.de/shared/php/download.php?file=CodeMaker.zip&amp;pid=4&amp;dwldid=1" rel="nofollow">Codemaker</a></p>
<p>phlox</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859151</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 26 Aug 2005 17:06:15 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Fri, 26 Aug 2005 16:15:06 GMT]]></title><description><![CDATA[<p>Zum initialisieren: Der Code soll ja nur ein Gerüst sein. Initialisieren kann man ja dann nachher noch selber. Wenn der Generator zu viele Angaben verlangt (z.B. Werte für Initialsierung), dann kann man den Code auch gleich im Editor selber eintippen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859154</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Fri, 26 Aug 2005 16:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 00:35:47 GMT]]></title><description><![CDATA[<p>Ich würde einfach alle Member nach 0 initialisieren, vor allem pointer. Man kann das später immer noch nach-editieren. Geht immerhin schneller als alle member nochmal zu tippen. Bei den zeigern ist eine initialisierung nach 0 sogar zwingend notwendig, da dir sonst jede if-abfrage gar nix bringt...</p>
<p>rya.<br />
Scorcher24</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859416</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 27 Aug 2005 00:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 08:33:51 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>Bei den zeigern ist eine initialisierung nach 0 sogar zwingend notwendig</p>
</blockquote>
<p>Nö.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859459</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Sat, 27 Aug 2005 08:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 21:29:31 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Hallo,<br />
die kanonische Signatur des Copy-Ctors ist:</p>
<pre><code class="language-cpp">ClassName(const ClassName&amp; other);
</code></pre>
<p>Die des operator=:</p>
<pre><code class="language-cpp">ClassName&amp; operator=(const ClassName&amp; other);
</code></pre>
<p>Schließlich willst du in der Regel ja auch Kopien von temporären Objekten erzeugen.</p>
</blockquote>
<p>Ok. Hab ich drin <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="🙂"
    /> Vielen Dank für den Hinweis.</p>
<p>phlox81 schrieb:</p>
<blockquote>
<p>Nett.</p>
<p>Denk mal über darüber nach, ob alles Inline sein muss, gerade<br />
bei Konstruktoren kann das imho nicht immer sinn machen.</p>
</blockquote>
<p>Was meinen andere im Forum denn hierzu? *umherfrag*</p>
<p>phlox81 schrieb:</p>
<blockquote>
<p>Zu dem sollte der Setter und Getter für variablen optional sein.</p>
</blockquote>
<p>Done <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>phlox81 schrieb:</p>
<blockquote>
<p>m_itest für int test finde ich auch nicht gerade prikelnd, sollte auch eine Option sein, oder evtl. sogar einstellbar.</p>
</blockquote>
<p>Aus &quot;<em>int test</em>&quot; wird bei mir &quot;<em>m_iTest</em>&quot;. Was ist daran schlimm bzw. sollte einstellbar sein? Oder wolltest Du garnicht auf die Kleinschreibung hinaus? Ist wahrscheinlich auch gleich: Hab ja jetzt einen Haken drin &quot;Ungarische Notation benutzen&quot;.</p>
<p>phlox81 schrieb:</p>
<blockquote>
<p>auserdem macht es sinn alles mit 0 zu initialisieren ???</p>
</blockquote>
<p>Wer macht denn sowas? Für Zahlentypen macht das imho Sinn und der Rest wird ebenfalls mit der entsprechende Null-Darstellung initialisiert. Wo das ein Problem ist kann man doch wie schon gesagt einfach selbst nochmal durch den Code gehen (Stichwort Gerüst)</p>
<p>Die Initialisiererliste ist nun für den Standardkonstruktor drin (sonst brauche ich die doch nich, oder?) wobei wie vorgeschlagen alles mit NULL initialisiert wird. Der Rest ist vorerst eben Handarbeit <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>Stand der Dinge nach dem heutigen Update (TODO):<br />
[1] Doxygen-Kommentare</p>
<p>Sonst noch was tolles?<br />
Was haltet ihr von einer Optionalen Serialisierung? Was sollte sonst noch rein? Bugs entdeckt?</p>
<p>Schönen Sonntag Euch allen <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/859839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859839</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Sat, 27 Aug 2005 21:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 22:18:43 GMT]]></title><description><![CDATA[<p>Hab jetzt die Doxygen-Geschichte im JavaDoc-Stil drin</p>
<pre><code>/**
 *  Kurzbeschreibung.
 *  Datei:   foo.h
 *  Autor:   narf
 *  Version: zort
 *  Ausführliche Beschreibung der Klasse.
 */
</code></pre>
<p>die Includes in die Guards mit reingezogen und überlege also Option die GPL/LGPL einbinden zu lassen. Wie seht Ihr das? Macht Ihr sowas? Welche Lizenzen wären noch zu berücksichtigen?</p>
<p>Gn8 zusammen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859855</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Sat, 27 Aug 2005 22:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 22:26:58 GMT]]></title><description><![CDATA[<p>Khadgar schrieb:</p>
<blockquote>
<p>Hab jetzt die Doxygen-Geschichte im JavaDoc-Stil drin</p>
<pre><code>/**
 *  Kurzbeschreibung.
 *  Datei:   foo.h
 *  Autor:   narf
 *  Version: zort
 *  Ausführliche Beschreibung der Klasse.
 */
</code></pre>
<p>die Includes in die Guards mit reingezogen und überlege also Option die GPL/LGPL einbinden zu lassen. Wie seht Ihr das? Macht Ihr sowas? Welche Lizenzen wären noch zu berücksichtigen?</p>
<p>Gn8 zusammen</p>
</blockquote>
<p>GPL und LPGP sind gerichtlich in deutschland anerkannt. gabs schon urteile zu. Bau darauf..<br />
rya.<br />
Scorcher24</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859857</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 27 Aug 2005 22:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 23:17:31 GMT]]></title><description><![CDATA[<p>HM. Ich bekomme diesen Fehler</p>
<pre><code class="language-cpp">Keine Kurzbeschreibung angegeben
</code></pre>
<p>die finde ich aber nirgends?<br />
Hanns</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859880</guid><dc:creator><![CDATA[HannsW]]></dc:creator><pubDate>Sat, 27 Aug 2005 23:17:31 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sat, 27 Aug 2005 23:32:34 GMT]]></title><description><![CDATA[<p>Khadgar schrieb:</p>
<blockquote>
<p>phlox81 schrieb:</p>
<blockquote>
<p>m_itest für int test finde ich auch nicht gerade prikelnd, sollte auch eine Option sein, oder evtl. sogar einstellbar.</p>
</blockquote>
<p>Aus &quot;<em>int test</em>&quot; wird bei mir &quot;<em>m_iTest</em>&quot;. Was ist daran schlimm bzw. sollte einstellbar sein? Oder wolltest Du garnicht auf die Kleinschreibung hinaus? Ist wahrscheinlich auch gleich: Hab ja jetzt einen Haken drin &quot;Ungarische Notation benutzen&quot;.</p>
</blockquote>
<p>IMHO ist die Ungarische (UN)Notation im Zeitalter von OOP überholt.<br />
Wie soll ich eigene Typen kennzeichnen ? Was definiere ich dann als<br />
Integralen Typen ? INT ist in ANSI C nicht genau definiert, bzw. hängt von der Plattform<br />
ab, int kann 16,32 oder 64 bit sein.<br />
Oder was anderes.<br />
Zu dem wiederspricht dies imho, dem Konzept der Kapselung, wer soll<br />
den bitte schön am namen erkennen können, was ich intern verwende ?<br />
Auch halte ich das m_ für member für überholt, es ist nur ein gimmick,<br />
genauso könnte man l_ für lokale Variablen einführen. Leserlicher würde<br />
der Code dadurch wohl nicht...<br />
Und, wie soll ich mit der ungarischen meine eigenen Typen kennzeichnen ?<br />
Oder einen String ? Ein String kann viele Formen haben, ob nun char*<br />
oder UNICODE (da gibts auch noch unterschiede... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />) oder<br />
was ganz anderes.</p>
<p>phlox</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859885</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 27 Aug 2005 23:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sun, 28 Aug 2005 00:24:26 GMT]]></title><description><![CDATA[<p>Scorcher24 schrieb:</p>
<blockquote>
<p>GPL und LPGP sind gerichtlich in deutschland anerkannt. gabs schon urteile zu. Bau darauf..<br />
rya.<br />
Scorcher24</p>
</blockquote>
<p>Werd ich denke ich dann zumindest als Option einbauen <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>HannsW schrieb:</p>
<blockquote>
<p>HM. Ich bekomme diesen Fehler</p>
<pre><code class="language-cpp">Keine Kurzbeschreibung angegeben
</code></pre>
<p>die finde ich aber nirgends?<br />
Hanns</p>
</blockquote>
<p>*g* Hast wohl recht. Ich hatte faulerweise nur das Skript, nicht aber die Darstellung geupdated <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="🙂"
    /> Korrigiert.</p>
<p>phlox81 schrieb:</p>
<blockquote>
<p>IMHO ist die Ungarische (UN)Notation im Zeitalter von OOP überholt [...] Leserlicher würde der Code dadurch wohl nicht...<br />
Und, wie soll ich mit der ungarischen meine eigenen Typen kennzeichnen ?<br />
Oder einen String ? Ein String kann viele Formen haben, ob nun char*<br />
oder UNICODE (da gibts auch noch unterschiede... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    />) oder<br />
was ganz anderes.</p>
<p>phlox</p>
</blockquote>
<p>Khadgar schrieb:</p>
<blockquote>
<p>Hab ja jetzt einen Haken drin &quot;Ungarische Notation benutzen&quot;.</p>
</blockquote>
<p>Ich werd nicht versuchen irgendwen zu irgendwas zu zwingen <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/859891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859891</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Sun, 28 Aug 2005 00:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sun, 28 Aug 2005 00:35:30 GMT]]></title><description><![CDATA[<p>Ach du dachtest ans Einfügen in die klasse. Na da auf alle Fälle. Geht doch nicht ohne... <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="😉"
    /><br />
Ich hab gedacht du meinst ob Du die Software darunter vertreiben sollst....<br />
<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>rya.<br />
Scorcher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859892</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sun, 28 Aug 2005 00:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sun, 28 Aug 2005 10:52:32 GMT]]></title><description><![CDATA[<p>Khadgar schrieb:</p>
<blockquote>
<p>Was meinen andere im Forum denn hierzu? *umherfrag*</p>
</blockquote>
<p>die grundidee ist ganz gut.<br />
aber an der ausführung hab ich leichte zweifel.</p>
<p>ich teste mal den assi und mach dazu auch alle schalter an. vielleicht erkenne ich ja einige als so schlimm nutzlos, daß du sie besser wegmachst.</p>
<p>Bogenschuetze.cpp:</p>
<pre><code class="language-cpp">#include &quot;Bogenschuetze.h&quot;
</code></pre>
<p>schade dabei bin ich gerade erst auf .hpp statt .h umgestiegen.</p>
<pre><code class="language-cpp">// TODO: Hier die interessanten Methoden implementieren.
</code></pre>
<p>auch schade. muss ich ja jedesmal löschen, wenn ich die datei erzeugt hab.</p>
<pre><code class="language-cpp">// Die Konstruktoren, Selektoren und Operatoren wurden bereits inline in .h implementiert.
</code></pre>
<p>was sind selektoren? das, was anderer inspektoren nennen? oder eher grantopalen? aus dem threadverlauf erntnehme ich, daß es getter sein könnten?<br />
und ein fehler. kein newline am dateiende. da spinnen manche compiler.</p>
<p>Bogenschuetze.h:</p>
<pre><code class="language-cpp">/**
 * Landeinheit mit Fernkampfwaffe.
 * Datei:   Bogenschuetze.h 
 * Author:  Volkard Henkel 
 * Version: 0.01 
 * Ein Bogensch³tze trõgt eine Waffe, die ³ber lõngere Distanzen angreifen kann. Er ist typischerweise schwach gepanzert. Im Nahkampf ist er ne Flasche. 
 */
</code></pre>
<p>dateiname ist doof. man hat die datei doch eh unter diesem namen im filesystem. autor schreibt man ohne h. versionsmanagement auf dateibasis ist etwas übertrieben. wer macht denn das (und noch dazu per hand)? aber du gibst hier ein versprechen ab. wenn die versionsnummer gleich ist, ist die semantik des interfaces gleich. der kurzkommentar und der langkommentar bringen hier nur ganz extrem selten was. normalerweise sagt der klassenname alles. also lass die kommentare weg, in den seltenen fällen, daß da was hin muss, kann der user sich was hinschreiben. also ich halte es nicht für praktischer, am anfang den kommentar in das formular einzugeben als nachher oder mittendrin ihn in die datei zu schreiben.<br />
warum kommentare in /**/ statt in // ?</p>
<p>bleibt also nur das feld autor übrig. und hier hab ich ne echte verbesserung. bau ein tool, das auf meinem rechner gestartet wird und das alle *.h mit ein paar kommentarzeilen am anfang (aber nach dem includeguard) versieht und gegebenenfalls den alten kommentar löscht. damit ich alle files mit nem licence-kommentar ausstatten kann.</p>
<pre><code class="language-cpp">/// DEFINITION /////////////////////////////////////////////
</code></pre>
<p>naja. nutzloser kommentar.<br />
mach außerdem so /////-streifen genau 80 zeichen breit.</p>
<pre><code class="language-cpp">#ifndef BOGENSCHUETZE
#define BOGENSCHUETZE
</code></pre>
<p>der #include-guard gehört ganz oben hin. zum einen bringt es ein mikro mehr speed beim compilieren, zum anderenhilft es dummen compilern, das als includeguard zu erkennen.</p>
<pre><code class="language-cpp">/// INCLUDES ///////////////////////////////////////////////
</code></pre>
<p>hab ich erkannt, daß jetzt die includes kommen. hab auch erkannt, daß es nicht mehr definition ist.</p>
<pre><code class="language-cpp">#include \&quot;NoCopy.hpp\&quot;
</code></pre>
<p>fehlerchen gemacht bei den tüddelchen.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
</code></pre>
<p>erste sinnvolle zeile.</p>
<pre><code class="language-cpp">/// NAMESPACES /////////////////////////////////////////////
</code></pre>
<p>dafür ist die wieder nutzlos.</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>den knopf kannste wegmachen. man soll nie using namespace in einen header schreiben.</p>
<pre><code class="language-cpp">class Bogenschuetze
{
</code></pre>
<p>nicht mein bracing style.</p>
<pre><code class="language-cpp">private:
</code></pre>
<p>du musst mit tabs einrücken. leerzeichen passen zu keiner IDE, außer ich hab zufällig mal die tabsize so eingestellt wie du. tabs gehen immer.</p>
<pre><code class="language-cpp">string m_sName;
</code></pre>
<p>ungarische notation ist sowas von tot, biete den kopf besser nicht an.</p>
<pre><code class="language-cpp">int m_iMinAngriffsDistanz;
    int m_iMaxAngriffsDistanz;
</code></pre>
<p>manchmal brauchen attribute kommentare. danke, daß du die nicht auch schreiben willst.</p>
<pre><code class="language-cpp">public:
</code></pre>
<p>ok.</p>
<pre><code class="language-cpp">Bogenschuetze()
    {
      m_sName = &quot;&quot;;
      m_iMinAngriffsDistanz = 0;
      m_iMaxAngriffsDistanz = 0;
    }
</code></pre>
<p>nicht ideal.<br />
der einzig sinnvolle konstruktor, den du bauen darfst, ist</p>
<pre><code class="language-cpp">
</code></pre>
<pre><code class="language-cpp">Bogenschuetze(const Bogenschuetze&amp; rhs)
      m_sName = rhs.getName();
      m_iMinAngriffsDistanz = rhs.getMinAngriffsDistanz();
      m_iMaxAngriffsDistanz = rhs.getMaxAngriffsDistanz();
    }
[cpp]
wie haben doch so ein komisches konzept mit &quot;eine klasse für einen zweck&quot;. überlegen wir mal, welche klassen einen destruktor. die, die ressourcen allokieren. also vector, queue, stack. sonst noch was? jo, string. vielleicht noch ein paar, aber nicht so viele. und genau die brauchen nen copy-ctor und nen zuweisungsoperator aus technischen gründen. deie masse der klassen darf sowas eigentlich gar ncht nötig haben.
</code></pre>
<p>inline Bogenschuetze&amp; operator=(const Bogenschuetze&amp; rhs)<br />
{<br />
if (this == &amp;rhs) return *this;<br />
m_sName = rhs.getName();<br />
m_iMinAngriffsDistanz = rhs.getMinAngriffsDistanz();<br />
m_iMaxAngriffsDistanz = rhs.getMaxAngriffsDistanz();<br />
return *this;<br />
}<br />
[/cpp]<br />
konntest copy&amp;swap benutzen.<br />
ah, und swap könntest du einbauen.</p>
<pre><code class="language-cpp">Bogenschuetze(string name, int minangriffsdistanz, int maxangriffsdistanz)
    {
      m_sName = name;
      m_iMinAngriffsDistanz = minangriffsdistanz;
      m_iMaxAngriffsDistanz = maxangriffsdistanz;
    }
</code></pre>
<p>der ist praktisch.</p>
<pre><code class="language-cpp">inline const string getName() const { return m_sName; }
    inline const int getMinAngriffsDistanz() const { return m_iMinAngriffsDistanz; }
    inline const int getMaxAngriffsDistanz() const { return m_iMaxAngriffsDistanz; }

    inline void setName(string s) { m_sName = s; }
    inline void setMinAngriffsDistanz(int i) { m_iMinAngriffsDistanz = i; }
    inline void setMaxAngriffsDistanz(int i) { m_iMaxAngriffsDistanz = i; }
</code></pre>
<p>ich bezweifle, daß getter und setter oft genug gebraucht werden.</p>
<pre><code class="language-cpp">inline bool operator== (Bogenschuetze&amp; rhs) const
    {
      if (this == &amp;rhs) return true;
      if (m_sName != rhs.getName()) return false;
      if (m_iMinAngriffsDistanz != rhs.getMinAngriffsDistanz()) return false;
      if (m_iMaxAngriffsDistanz != rhs.getMaxAngriffsDistanz()) return false;
      return true;
    }
</code></pre>
<p>ok.</p>
<pre><code class="language-cpp">};
#endif
</code></pre>
<p>manche schreiben gerne</p>
<pre><code class="language-cpp">};
#endif //BOGENSCHUETZE
</code></pre>
<p>und statt BOGENSCHUETZE vielleicht BOGENSCHUETZE_H, damit es keine kollision mit nem makro gibt.</p>
<p>es wäre gut, wenn du noch nen knopf einbauen würdest &quot;diese einstellungen merken&quot; und daß du die einstellungen als cookie speicherst. dann kannste auch noch ein paar mehr features einbauen.<br />
- tabs statt spaces. (bei mir an)<br />
- anderer bracing stype. (bei mir an)<br />
- the big three. (bei mir normalerweise aus)<br />
- getter/setter. (bei mir normalerweise aus)<br />
- kopieren verboten. (bei mir an)<br />
- .hpp statt .h. (bei mir an)<br />
- kommentar autor. (bei mir aus)<br />
- licence-text. (ganzen string in den cookie rein!)<br />
- zusätzlicher button &quot;GPL in das licence-textfeld kopieren&quot;<br />
- zusätzlicher button &quot;LGPL in das licence-textfeld kopieren&quot;<br />
- kommetar version. (bei mir aus)<br />
- kommetar dateiname. (bei mir aus)<br />
- kommentar klassenbeschreibung. (bei mir meistens aus)<br />
- basisklasse<br />
- attribute am ende statt am anfang<br />
- struct statt class (was automatisch keine getter/setter baut)</p>
<p>recht gut bewäht bei mir hat sich ein lokales tool, daß nur den klassennamen abfragt und anhand eines templates (wortbedeutung wie bei php) die *.h und *.cpp baut. so ein template für *.h sah so aus:</p>
<pre><code class="language-cpp">#ifndef CLASS_H__UID
#define CLASS_H__UID
#pragma once

////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2004, Volkard Henkel

#include &quot;NoCopy.h&quot;

class Class
{
NOCOPY;
private:
        CURSOR
public:
};

#endif//CLASS_H__UID
</code></pre>
<p>dabei hat der assi Class ersetzt zum eingegebenen Klassennamen und CLASS zum KLASSENNAMEN und UID war ne lange zufallszeichenfolge. und die ide war so nett, den corsor auch dahinzusetzen, woe CURSOR stand.</p>
<p>normalerweise fange ich damit an, die attribute hinzuschreiben. und da ich selten getter/setter habe, kann ich die auch einfach in den code schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/859980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/859980</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 28 Aug 2005 10:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen-Erzeugungs Assistent on Sun, 28 Aug 2005 13:59:21 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Bogenschuetze.cpp:</p>
<pre><code class="language-cpp">#include &quot;Bogenschuetze.h&quot;
</code></pre>
<p>schade dabei bin ich gerade erst auf .hpp statt .h umgestiegen.</p>
</blockquote>
<p>Hab das jetz mal Probehalber auf hpp umgestellt. Sollte zeitgemäßer sein.</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// TODO: Hier die interessanten Methoden implementieren.
</code></pre>
<p>auch schade. muss ich ja jedesmal löschen, wenn ich die datei erzeugt hab.</p>
</blockquote>
<p>Ist auch ein gutes Argument <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>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Die Konstruktoren, Selektoren und Operatoren wurden bereits inline in .h implementiert.
</code></pre>
<p>was sind selektoren? das, was anderer inspektoren nennen? oder eher grantopalen? aus dem threadverlauf erntnehme ich, daß es getter sein könnten?</p>
</blockquote>
<p>Hmm. Getter... Klingt mekrwürdig. Aber es läuft auf die Get*/Set* Methoden hinaus.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>und ein fehler. kein newline am dateiende. da spinnen manche compiler.</p>
</blockquote>
<p>Done</p>
<p>volkard schrieb:</p>
<blockquote>
<p>Bogenschuetze.h:</p>
<pre><code class="language-cpp">/**
 * Landeinheit mit Fernkampfwaffe.
 * Datei:   Bogenschuetze.h 
 * Author:  Volkard Henkel 
 * Version: 0.01 
 * Ein Bogensch³tze trõgt eine Waffe, die ³ber lõngere Distanzen angreifen kann. Er ist typischerweise schwach gepanzert. Im Nahkampf ist er ne Flasche. 
 */
</code></pre>
<p>dateiname ist doof. man hat die datei doch eh unter diesem namen im filesystem. autor schreibt man ohne h. versionsmanagement auf dateibasis ist etwas übertrieben. wer macht denn das (und noch dazu per hand)? aber du gibst hier ein versprechen ab. wenn die versionsnummer gleich ist, ist die semantik des interfaces gleich.</p>
</blockquote>
<p>Mit Ausnahme des <em>Author</em>s gehen die Meinungen dahingehend anscheinander auseinander. Ich habe versucht mich möglichst an diese <a href="http://www.ges-training.de/Expertentips/C++-Regeln/EL_CPP_1.html" rel="nofollow">Quelle</a> zu halten.</p>
<p>volkard schrieb:</p>
<blockquote>
<p>der kurzkommentar und der langkommentar bringen hier nur ganz extrem selten was. normalerweise sagt der klassenname alles. also lass die kommentare weg, in den seltenen fällen, daß da was hin muss, kann der user sich was hinschreiben. also ich halte es nicht für praktischer, am anfang den kommentar in das formular einzugeben als nachher oder mittendrin ihn in die datei zu schreiben.</p>
</blockquote>
<p>Hmm. Man muss ja die Header-Kommentare nicht aktivieren, oder meinst du was anderes?</p>
<p>volkard schrieb:</p>
<blockquote>
<p>warum kommentare in /**/ statt in // ?</p>
</blockquote>
<p>Bin ich von Java so gewohnt. Finde ich irgendwie schöner und wird durch Doxygen unterstützt <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>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">/// DEFINITION /////////////////////////////////////////////
</code></pre>
<p>naja. nutzloser kommentar.<br />
mach außerdem so /////-streifen genau 80 zeichen breit.</p>
</blockquote>
<p>Hast bezüglich dieser Kommentare wohl recht. Hab zuletzt zuviel Lamothe gelesen.</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#ifndef BOGENSCHUETZE
#define BOGENSCHUETZE
</code></pre>
<p>der #include-guard gehört ganz oben hin. zum einen bringt es ein mikro mehr speed beim compilieren, zum anderenhilft es dummen compilern, das als includeguard zu erkennen..</p>
</blockquote>
<p>Done</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include \&quot;NoCopy.hpp\&quot;
</code></pre>
<p>fehlerchen gemacht bei den tüddelchen.[/cpp]</p>
</blockquote>
<p>Gut. &quot;Korrigiert&quot;. Ab jetzt ohne Anführungszeichen eingeben.</p>
<p>[quote=&quot;volkard&quot;]</p>
<pre><code class="language-cpp">#include &lt;string&gt;
</code></pre>
<p>erste sinnvolle zeile. [/cpp]<br />
Vielen Dank *fg*</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>den knopf kannste wegmachen. man soll nie using namespace in einen header schreiben.</p>
</blockquote>
<p>Weil?</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Bogenschuetze
{
</code></pre>
<p>nicht mein bracing style.</p>
</blockquote>
<p>Hmm. War meiner bis vor kurzem auch nicht. Kann dem aber was abgewinnen <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="🙂"
    /><br />
Ausserdem kann ich's wenn es um den Stil geht sowieso nicht jedem Recht machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">private:
</code></pre>
<p>du musst mit tabs einrücken. leerzeichen passen zu keiner IDE, außer ich hab zufällig mal die tabsize so eingestellt wie du. tabs gehen immer.</p>
</blockquote>
<p>Done (Glaub ich. Mein PHP-Editor macht da gerade beim betrachten der Dateien keine(?) Unterschiede</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">string m_sName;
</code></pre>
<p>ungarische notation ist sowas von tot, biete den kopf besser nicht an.</p>
</blockquote>
<p>Weil?</p>
<p>[quote=&quot;volkard&quot;]</p>
<pre><code class="language-cpp">int m_iMinAngriffsDistanz;
    int m_iMaxAngriffsDistanz;
</code></pre>
<p>manchmal brauchen attribute kommentare. danke, daß du die nicht auch schreiben willst. [/cpp]<br />
Zynisch geworden oder verstehe ich den Sinn nur nicht?</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Bogenschuetze()
    {
      m_sName = &quot;&quot;;
      m_iMinAngriffsDistanz = 0;
      m_iMaxAngriffsDistanz = 0;
    }
</code></pre>
<p>nicht ideal.<br />
der einzig sinnvolle konstruktor, den du bauen darfst, ist</p>
<pre><code class="language-cpp">
</code></pre>
<pre><code class="language-cpp">Bogenschuetze(const Bogenschuetze&amp; rhs)
      m_sName = rhs.getName();
      m_iMinAngriffsDistanz = rhs.getMinAngriffsDistanz();
      m_iMaxAngriffsDistanz = rhs.getMaxAngriffsDistanz();
    }
[cpp]
</code></pre>
</blockquote>
<p>Hmm. Ich verstehe trotzdem nicht so ganz was dagegen spricht, zumal ich es als nützlich empfinde meine Objekte auf alle mögliche Arten konstruieren zu können. Wäre nett wenn du das auch mal kurz anreissen könntest <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>volkard schrieb:</p>
<blockquote>
<p>konntest copy&amp;swap benutzen.<br />
ah, und swap könntest du einbauen.</p>
</blockquote>
<p>Öhm. Wenn ich wüsste was es wäre würde ich das vielleicht tun</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Bogenschuetze(string name, int minangriffsdistanz, int maxangriffsdistanz)
    {
      m_sName = name;
      m_iMinAngriffsDistanz = minangriffsdistanz;
      m_iMaxAngriffsDistanz = maxangriffsdistanz;
    }
</code></pre>
<p>der ist praktisch.</p>
</blockquote>
<p>Danke. Finde ich auch <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>volkard schrieb:</p>
<blockquote>
<p>ich bezweifle, daß getter und setter oft genug gebraucht werden.</p>
</blockquote>
<p>Hmm. Wann ist &quot;oft genug&quot;? Könnte man allerdings auch optional machen. Stimmt schon.</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">};#endif
</code></pre>
<p>manche schreiben gerne</p>
<pre><code class="language-cpp">}; #endif //BOGENSCHUETZE
</code></pre>
<p>und statt BOGENSCHUETZE vielleicht BOGENSCHUETZE_H, damit es keine kollision mit nem makro gibt.</p>
</blockquote>
<p>Done</p>
<p>volkard schrieb:</p>
<blockquote>
<p>es wäre gut, wenn du noch nen knopf einbauen würdest &quot;diese einstellungen merken&quot; und daß du die einstellungen als cookie speicherst. dann kannste auch noch ein paar mehr features einbauen.<br />
- tabs statt spaces. (bei mir an)<br />
- anderer bracing stype. (bei mir an)<br />
- the big three. (bei mir normalerweise aus)<br />
- getter/setter. (bei mir normalerweise aus)<br />
- kopieren verboten. (bei mir an)<br />
- .hpp statt .h. (bei mir an)<br />
- kommentar autor. (bei mir aus)<br />
- licence-text. (ganzen string in den cookie rein!)<br />
- zusätzlicher button &quot;GPL in das licence-textfeld kopieren&quot;<br />
- zusätzlicher button &quot;LGPL in das licence-textfeld kopieren&quot;<br />
- kommetar version. (bei mir aus)<br />
- kommetar dateiname. (bei mir aus)<br />
- kommentar klassenbeschreibung. (bei mir meistens aus)<br />
- basisklasse<br />
- attribute am ende statt am anfang<br />
- struct statt class (was automatisch keine getter/setter baut)</p>
</blockquote>
<p>Ich hab mir den obigen Teil mal ausgedruckt. Ein paar Sachen finde ich zwar nicht unbedingt nützlich aber i.A. sind da viele nette Ideen bei <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>volkard schrieb:</p>
<blockquote>
<p>recht gut bewäht bei mir hat sich ein lokales tool, daß nur den klassennamen abfragt und anhand eines templates (wortbedeutung wie bei php) die *.h und *.cpp baut. so ein template für *.h sah so aus:</p>
<pre><code class="language-cpp">#ifndef CLASS_H__UID
#define CLASS_H__UID
#pragma once

////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2004, Volkard Henkel

#include &quot;NoCopy.h&quot;

class Class
{
NOCOPY;
private:
        CURSOR
public:
};

#endif//CLASS_H__UID
</code></pre>
<p>dabei hat der assi Class ersetzt zum eingegebenen Klassennamen und CLASS zum KLASSENNAMEN und UID war ne lange zufallszeichenfolge. und die ide war so nett, den corsor auch dahinzusetzen, woe CURSOR stand.</p>
<p>normalerweise fange ich damit an, die attribute hinzuschreiben. und da ich selten getter/setter habe, kann ich die auch einfach in den code schreiben.</p>
</blockquote>
<p>Boah. <em>ächtz</em><br />
Vielen Dank dafür Dir so viel Zeit für die Auseinandersetzung mit meinem Projekt genommen zu haben. Ich habe einige Vorschläge von dir bereits auf meinem Server umgesetzt und werde dem im Laufe des tage noch einiges zufügen und dann die öffentliche Version aktualisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/860098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/860098</guid><dc:creator><![CDATA[Khadgar]]></dc:creator><pubDate>Sun, 28 Aug 2005 13:59:21 GMT</pubDate></item></channel></rss>