<?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[magic number in klassen zum sortieren]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>ich stehe mal wieder vor einem design problem *mmmpf*<br />
das ganze sieht so aus, das ich eine n anzahl klassen habe die alle von base ableiten und in einem vector/list gespeichert werden sollen. der user der bibliothek besitzt auch die möglichkeit von base abzuleiten und seine eigenen ableitungen dem vector hinzuzufügen.</p>
<p>zu meinem problem:<br />
ich möchte nun das die klassen, nicht die objekte, so eine art 'magic number' besitzten nach der sie sortiert werden sollen. diese kann ich dann zb: innerhalb des vectors aufaddieren und dann die vectoren innerhalb eines set sortieren. die magic number sollte mir auch behilflich sein doppeltes hinzufügen von objekten der selben klasse zu vermeiden (könnte ich wahrscheinlich mit einer map&lt;'magic number', base*&gt; lösen)</p>
<p>ich hoffe ich habe mich verständlich ausgedrückt und bin so für ziemlich jeden designvorschlag dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154458/magic-number-in-klassen-zum-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 01:32:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154458.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Jul 2006 12:35:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 12:35:04 GMT]]></title><description><![CDATA[<p>hallo zusammen,</p>
<p>ich stehe mal wieder vor einem design problem *mmmpf*<br />
das ganze sieht so aus, das ich eine n anzahl klassen habe die alle von base ableiten und in einem vector/list gespeichert werden sollen. der user der bibliothek besitzt auch die möglichkeit von base abzuleiten und seine eigenen ableitungen dem vector hinzuzufügen.</p>
<p>zu meinem problem:<br />
ich möchte nun das die klassen, nicht die objekte, so eine art 'magic number' besitzten nach der sie sortiert werden sollen. diese kann ich dann zb: innerhalb des vectors aufaddieren und dann die vectoren innerhalb eines set sortieren. die magic number sollte mir auch behilflich sein doppeltes hinzufügen von objekten der selben klasse zu vermeiden (könnte ich wahrscheinlich mit einer map&lt;'magic number', base*&gt; lösen)</p>
<p>ich hoffe ich habe mich verständlich ausgedrückt und bin so für ziemlich jeden designvorschlag dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105348</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Thu, 27 Jul 2006 12:35:04 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 12:44:39 GMT]]></title><description><![CDATA[<p>Dafür ist doch std::set da?!</p>
<p>Wenn du diszipliniert bist und wirklich jeder Klasse eine eindeutige Magic Number spendierst sollte das doch kein Problem sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105357</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 27 Jul 2006 12:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 12:56:07 GMT]]></title><description><![CDATA[<p>mein problem ist das ich anscheinend tomaten auf den augen habe und auf keine vernünftige implementierung komme. schliesslich muss es dem user auch ziemlich einfach gemacht werden <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="😉"
    /> mach doch mal bitte ein pseudo bsp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105366</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Thu, 27 Jul 2006 12:56:07 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:19:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;int N&gt;
class RealBase&lt;N&gt;;

class Base
{
public:
    // Basisklassenkrams

    template &lt;int T&gt;
    friend class RealBase&lt;N&gt;;

    int getMagicNumber ()
    {
        return do_get_mn ();
    }

private:
    Base () {}
    virtual int do_get_mn () = 0;
};

template &lt;int N&gt;
class RealBase : public Base
{
private:
    virtual int do_get_mn ()
    {
        return N;
    }
};

namespace std
{
    template &lt;&gt;
    struct less&lt;Base*&gt;
    {
        bool operator () (const Base*&amp; lhs, const Base*&amp; rhs)
        {
            return lhs-&gt;getMagicNumber () &lt; rhs-&gt;getMagicNumber ();
        }
    };
}

class Derived : public RealBase&lt;42&gt;
{
// blabla
};

class Derived2 : public RealBase&lt;23&gt;
{
// blabla2
};

// ...

std::set&lt;Base*&gt; mySet;
mySet.insert (new Derived1);
mySet.insert (new Derived2);
</code></pre>
<p>Irgendwie bin ich mir da aber noch unsicher. Wie stellt set eigentlich fest, ob ein Objekt schon vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105376</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:16:50 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt;
    friend class RealBase&lt;N&gt;;
</code></pre>
</blockquote>
<p>Bist du sicher, daß das stimmt? Wenn schon, mußt du dort ein &quot;template&lt;int N&gt;&quot; verwenden <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>
<pre><code class="language-cpp">std::set&lt;Base*&gt; mySet;
mySet.push (new Derived1);
mySet.push (new Derived2);
</code></pre>
</blockquote>
<p>Fast richtig - das heißt &quot;insert()&quot; und nicht &quot;push()&quot;.</p>
<blockquote>
<p>Wie stellt set eigentlich fest, ob ein Objekt schon vorhanden ist?</p>
</blockquote>
<p>Wenn weder x&lt;y noch y&lt;x gilt, sind die Objekte &quot;gleich&quot; - und mit dieser Definition wird überprüft, ob und wo ein Element eingefügt werden soll.</p>
<p>*grübelt* Ich bin mir nicht sicher, aber man könnte die Magic Numbers über statische Variablen automatisch vergeben, dann braucht sich der Anwender nicht darum zu kümmern, welche &quot;RealBase&lt;&gt;&quot; Spezialisierungen schon vergeben sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105385</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:22:18 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>.filmor schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt;
    friend class RealBase&lt;N&gt;;
</code></pre>
</blockquote>
<p>Bist du sicher, daß das stimmt? Wenn schon, mußt du dort ein &quot;template&lt;int N&gt;&quot; verwenden <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>
<pre><code class="language-cpp">std::set&lt;Base*&gt; mySet;
mySet.push (new Derived1);
mySet.push (new Derived2);
</code></pre>
</blockquote>
<p>Fast richtig - das heißt &quot;insert()&quot; und nicht &quot;push()&quot;.</p>
</blockquote>
<p>Korrigiert.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>*grübelt* Ich bin mir nicht sicher, aber man könnte die Magic Numbers über statische Variablen automatisch vergeben, dann braucht sich der Anwender nicht darum zu kümmern, welche &quot;RealBase&lt;&gt;&quot; Spezialisierungen schon vergeben sind.</p>
</blockquote>
<p>Irgendwie stelle ich mir das ohne RTTI ziemlich schwer vor (und auch mit der wird es wahrscheinlich ziemlich kompliziert sein). Und weil ich RTTI nicht mag, hab ichs halt (zum Teil) auf die Compilezeit geschoben. Das war die erste &quot;Lösung&quot; die mir einfiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105392</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:37:54 GMT]]></title><description><![CDATA[<p>danke euch beiden für eure ansatze. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
filmors idee finde ich net schlecht, hat zwar noch einen grossen nachteil wie cstoll schon erwähnt hat, aber ich denke ich habe schon eine idee.<br />
mit einem statischen &quot;id creator&quot; habe ich es ansatzweise probiert und bin kläglich gescheitert.<br />
RTTI scheidet bei mir von vorne herein immer aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105407</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:37:54 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:39:58 GMT]]></title><description><![CDATA[<p>Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105409</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 13:44:15 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.</p>
</blockquote>
<p>werde ich auf jeden fall tun wenn sie soweit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105413</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Thu, 27 Jul 2006 13:44:15 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 14:56:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int Base::getMagicNumber(){return *(int*)this;}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1105458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105458</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Jul 2006 14:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Thu, 27 Jul 2006 15:03:44 GMT]]></title><description><![CDATA[<p>In Modern C++ Design verwendet der Autor sowas für seine AbstractFactory, hat das auch recht elegant gelöst mit dem statischen ID Feld, kannst ja mal in die Loki-Lib schauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105466</guid><dc:creator><![CDATA[Lokilo]]></dc:creator><pubDate>Thu, 27 Jul 2006 15:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Fri, 28 Jul 2006 07:25:42 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>.filmor schrieb:</p>
<blockquote>
<p>Dann lass uns teilhaben, wenn du eine Idee hast. So etwas kann man immer mal gebrauchen.</p>
</blockquote>
<p>werde ich auf jeden fall tun wenn sie soweit.</p>
</blockquote>
<p>gestern abend hatte ich doch keine zeit meine idee zu testen.<br />
zur erklärung:<br />
meine gestrige idee war das der user eine typliste übergeben könnte, ich diese iteriere und eine konstate für jeden typ setzte.</p>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int Base::getMagicNumber(){return *(int*)this;}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105849</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Fri, 28 Jul 2006 07:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Fri, 28 Jul 2006 07:53:43 GMT]]></title><description><![CDATA[<p>Mach's komplett anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1105885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1105885</guid><dc:creator><![CDATA[rat]]></dc:creator><pubDate>Fri, 28 Jul 2006 07:53:43 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Mon, 31 Jul 2006 08:20:01 GMT]]></title><description><![CDATA[<p>Nur eine Idee, die mir über's Wochenende gekommen ist: Warum verwendest du nicht <a href="http://cppreference.com/keywords/typeid.html" rel="nofollow">typeid</a>, um deine Klassen zu identifizieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107520</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 31 Jul 2006 08:20:01 GMT</pubDate></item><item><title><![CDATA[Reply to magic number in klassen zum sortieren on Mon, 31 Jul 2006 08:26:55 GMT]]></title><description><![CDATA[<p>miller_m schrieb:</p>
<blockquote>
<p>RTTI scheidet bei mir von vorne herein immer aus.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1107529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107529</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 31 Jul 2006 08:26:55 GMT</pubDate></item></channel></rss>