<?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[Wann static Methoden verwenden?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mir ist klar, wie man static Methoden verwendet bzw. implementiert, mir ist hingegen nicht ganz klar, wann es design-mäßig günstig ist, diese zu verwenden.</p>
<p>Ein Beispiel:<br />
Nehmen wir das allseits bekannte TicTacToe Spiel (<a href="http://de.wikipedia.org/wiki/Tic_Tac_Toe" rel="nofollow">http://de.wikipedia.org/wiki/Tic_Tac_Toe</a>).<br />
Ich habe eine Klasse, die die Logik des Spiels mitsamt KI implementiert.<br />
Um festzustellen, ob in einer gewissen Spielsituation ein Spieler gewonnen hat, bzw. ob es unentschieden (sprich: alle Felder voll, aber kein Gewinner) steht, habe ich die Funktion <strong>FindWinner</strong>. Da ich hierbei auf keine Membervariablen zugreife, sondern ein Spielfeld übergebe, habe ich die Funktion static gemacht.<br />
Gleiche Überlegung liegt auch den Funktionen <strong>SetPlayGround</strong> und <strong>CalcRating</strong> zugrunde, wobei erstere ein Spielfeld einem anderen zuweist, während letztere eine Spielsituation bewertet.<br />
Jedes mal handelt es sich um eine Funktionalität, welche nicht von Membervariablen abhängt - also allgemein für die Klasse ist.</p>
<p>Ist das tatsächlich ein Anwendungsfall für static Methoden, oder würdet ihr static Methoden eher in anderen Fällen verwenden - und wenn ja - in welchen?</p>
<pre><code>class CTicTacToe : public ITicTacToe
{

public:
    explicit        CTicTacToe(IViewer* aViewer);

    virtual void    ResetGame();
    virtual bool    MarkSpace(int x, int y);
    virtual bool    AIPlay(EDifficulty difficulty);
    virtual EPlayer GameFinished();
    virtual EPlayer GetPlayerAt(int x, int y);

protected:
    static EPlayer  FindWinner(const EPlayer aPlayGround[][PlayGroundSize]); // &lt;-- hier
    void            AssertIndex(int index);
    void            InitPlayGround();
    CKIResult       AIFindBestPlay(int depth, const EPlayer aPlayGround[][PlayGroundSize]);
    static void     SetPlayGround(EPlayer dest[][PlayGroundSize], const EPlayer src[][PlayGroundSize]); // &lt;-- hier
    static double   CalcRating(EPlayer aPlayer, int depth); // &lt;-- hier

private:
    IViewer*        m_Viewer;
    EPlayer         m_PlayGround[PlayGroundSize][PlayGroundSize];
    int             m_AIMaxDepth;

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/312119/wann-static-methoden-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:18:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312119.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 25 Dec 2012 00:07:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 00:07:07 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Mir ist klar, wie man static Methoden verwendet bzw. implementiert, mir ist hingegen nicht ganz klar, wann es design-mäßig günstig ist, diese zu verwenden.</p>
<p>Ein Beispiel:<br />
Nehmen wir das allseits bekannte TicTacToe Spiel (<a href="http://de.wikipedia.org/wiki/Tic_Tac_Toe" rel="nofollow">http://de.wikipedia.org/wiki/Tic_Tac_Toe</a>).<br />
Ich habe eine Klasse, die die Logik des Spiels mitsamt KI implementiert.<br />
Um festzustellen, ob in einer gewissen Spielsituation ein Spieler gewonnen hat, bzw. ob es unentschieden (sprich: alle Felder voll, aber kein Gewinner) steht, habe ich die Funktion <strong>FindWinner</strong>. Da ich hierbei auf keine Membervariablen zugreife, sondern ein Spielfeld übergebe, habe ich die Funktion static gemacht.<br />
Gleiche Überlegung liegt auch den Funktionen <strong>SetPlayGround</strong> und <strong>CalcRating</strong> zugrunde, wobei erstere ein Spielfeld einem anderen zuweist, während letztere eine Spielsituation bewertet.<br />
Jedes mal handelt es sich um eine Funktionalität, welche nicht von Membervariablen abhängt - also allgemein für die Klasse ist.</p>
<p>Ist das tatsächlich ein Anwendungsfall für static Methoden, oder würdet ihr static Methoden eher in anderen Fällen verwenden - und wenn ja - in welchen?</p>
<pre><code>class CTicTacToe : public ITicTacToe
{

public:
    explicit        CTicTacToe(IViewer* aViewer);

    virtual void    ResetGame();
    virtual bool    MarkSpace(int x, int y);
    virtual bool    AIPlay(EDifficulty difficulty);
    virtual EPlayer GameFinished();
    virtual EPlayer GetPlayerAt(int x, int y);

protected:
    static EPlayer  FindWinner(const EPlayer aPlayGround[][PlayGroundSize]); // &lt;-- hier
    void            AssertIndex(int index);
    void            InitPlayGround();
    CKIResult       AIFindBestPlay(int depth, const EPlayer aPlayGround[][PlayGroundSize]);
    static void     SetPlayGround(EPlayer dest[][PlayGroundSize], const EPlayer src[][PlayGroundSize]); // &lt;-- hier
    static double   CalcRating(EPlayer aPlayer, int depth); // &lt;-- hier

private:
    IViewer*        m_Viewer;
    EPlayer         m_PlayGround[PlayGroundSize][PlayGroundSize];
    int             m_AIMaxDepth;

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2283057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283057</guid><dc:creator><![CDATA[static_function_frage]]></dc:creator><pubDate>Tue, 25 Dec 2012 00:07:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 00:23:11 GMT]]></title><description><![CDATA[<p>Du bist irgendwie noch nicht ganz in C++ angekommen. Man hat es da nicht so mit Interfaces und Pointern und (Achtung Tautologie) monolithischen, mega-mässigen Gottes-Klassen (&quot;Klasse, die die Logik des Spiels mitsamt KI implementiert&quot;).</p>
<p>Um die Frage zu beantworten: Ja die Funktionen sollten keine nicht-statische Memberfunktion sein, allerdings auch keine statische, sondern im Allgemeinen lieber eine freie Funktion.</p>
<p>Dein Design würde in C++ so aussehen:</p>
<pre><code class="language-cpp">class TTTField {
    EPlayer m_PlayGround[PlayGroundSize][PlayGroundSize];

public:
    bool    MarkSpace(int x, int y);
    EPlayer GetPlayerAt(int x, int y);
};

// ResetGame fällt weg, da nimmt man einfach ein neues Spielfeld
// AssertIndex verstehe ich nicht

bool AIPlay(TTTField const&amp; f, EDifficulty difficulty);
EPlayer  FindWinner(TTTField const&amp; f); // &lt;-- hier
CKIResult AIFindBestPlay(TTTField const&amp; f, int depth);
void SetPlayGround(TTTField const&amp; a, TTTField const&amp; b); // &lt;-- hier
double CalcRating(EPlayer aPlayer, int depth); // &lt;-- hier
</code></pre>
<p>Kurze Erklärung zu Pointern: Pointer zu verwalten führt sehr leicht zu Leaks. Daher NIE besitzende Zeiger verwenden. Wenn du einen halbwegs aktuellen COmpiler zur Hand hast, kannst du std::unique_ptr&lt;&gt; verwenden. Arrays werden praktisch immer in einem std::vector gehalten.</p>
<p>Kurze Erklärung zu Interfaces: Ist in C++ meistens nicht nötig, da man mit Templates ein Sprachmittel zur Verfügung hat, das die meisten Fälle abdecken kann und Programmierung gegen Interfaces zulässt, aber während der Laufzeit keinen Overhead verursacht.</p>
<p>Daher hat man in C++ keine tiefgreifende Klassenhierarchien und die Klassen sind eher klein. Man sagt: Freie Funktionen erhöhen die Kapselung und bedeuten daher sogar mehr OOP. Mach möglichst viele möglichst kleine Klassen, die lose gekoppelt sind und bearbeite sie mit freien Funktionen. Vererbung ist eher rar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283058</guid><dc:creator><![CDATA[monogott]]></dc:creator><pubDate>Tue, 25 Dec 2012 00:23:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 00:53:16 GMT]]></title><description><![CDATA[<p>Danke für die AW. Interessanter Lösungsvorschlag!</p>
<p><strong>Zu den Interfaces:</strong><br />
Hab das Buch &quot;Design Patterns: Elements of Reusable Object-Oriented Software&quot; gelesen, und dort wurde auch bei C++ Code immer mit (expliziten) Interfaces gearbeitet.<br />
Ist in C++ aber trotzdem von (expliziten) Interfaces abzuraten?</p>
<p><strong>Zu std::vector und 2d Arrays:</strong><br />
Das ganze würde ja zu vector&lt; vector&lt;int&gt; &gt; führen.<br />
Ist das performant? Wäre es evtl. besser, an der Stelle boost::multi_array zu verwenden?</p>
<p><strong>Zu den Zeigern:</strong><br />
Die Instanz von CTicTacToe ist nicht Besitzer vom übergebenen IViewer Zeiger, daher wäre es an der Stelle fatal, diesen Zeiger am Ende der Lebensdauer zu löschen.<br />
Als Referenz kann ich den IViewer aber auch nicht übergeben/speichern, da auch ein 0 Zeiger möglich sein soll. Daher geht ein roher Zeiger an der Stelle schon ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283061</guid><dc:creator><![CDATA[static_function_frage]]></dc:creator><pubDate>Tue, 25 Dec 2012 00:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 01:02:24 GMT]]></title><description><![CDATA[<p>Noch was zu den &quot;monolithischen, mega-mässigen Gottes-Klassen&quot;:<br />
Kennst du ein gutes Buch bzw. eine Website, die das von dir vorgeschlagene Design (also kleine Klassen mit den Daten und nur den nötigsten Methoden, und freie Funktionen zur Manipulation dieser Klassen) in C++ gut erklärt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283063</guid><dc:creator><![CDATA[static_function_frage]]></dc:creator><pubDate>Tue, 25 Dec 2012 01:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 02:18:53 GMT]]></title><description><![CDATA[<p>Soviel gibt es da eigentlich nicht zu erklären.</p>
<p>Soweit ich es verstehe, sind Klassen dafür da, <strong>zusammengehörige</strong> Daten und Funktionen vom Rest des Programm abzukapseln.</p>
<p>Der Vorteil darin ist z.B. der, daß man den Programmcode in einzelne Module aufteilen kann. Diese sind übersichtlicher und leichter wartbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283065</guid><dc:creator><![CDATA[redrew99]]></dc:creator><pubDate>Tue, 25 Dec 2012 02:18:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 07:13:26 GMT]]></title><description><![CDATA[<p>static_function_frage schrieb:</p>
<blockquote>
<p>Ist in C++ aber trotzdem von (expliziten) Interfaces abzuraten?</p>
</blockquote>
<p>Keine Ahnung, was ein &quot;explizites&quot; Interface sein soll, aber wenn du ein Interface brauchst, kannst du natürlich eines verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283069</guid><dc:creator><![CDATA[puups]]></dc:creator><pubDate>Tue, 25 Dec 2012 07:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 09:56:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Wäre es evtl. besser, an der Stelle boost::multi_array zu verwenden?</p>
</blockquote>
<p>Ja.<br />
Ich zitiere mal:</p>
<p>&lt;a href= schrieb:</p>
<blockquote>
<p>Boost.Multiarray Doc&quot;&gt;Boost MultiArray is a more efficient and convenient way to express N-dimensional arrays than existing alternatives (especially the std::vector&lt;std::vector&lt;...&gt;&gt; formulation of N-dimensional arrays).</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2283076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283076</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 25 Dec 2012 09:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 10:51:40 GMT]]></title><description><![CDATA[<p>Danke fürs Feedback!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283094</guid><dc:creator><![CDATA[static_function_frage]]></dc:creator><pubDate>Tue, 25 Dec 2012 10:51:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 11:01:17 GMT]]></title><description><![CDATA[<p>Also meiner Erfahrung nach ist (bzw. war vor ein paar Jahren) boost::multi_array unbrauchbar langsam. Für ein einfaches 2D-Array nimm einen Wrapper um einen 1D-vector, der die Indizes passend umbricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283097</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Dec 2012 11:01:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 13:10:15 GMT]]></title><description><![CDATA[<p>Ich finde die Philosophie sich boost reinzuholen für ein bisschen TicTacToe echt für Übertrieben.</p>
<p>Was &quot;static&quot; angeht gibt es meiner Meinung keinen Grund die Routine nicht einfach in einen entsprechenden Namespace zu packen. Ich denke Pattern profitieren besser von static, indem man z.B. sowas wie Singleton implementiert.</p>
<p>Alleine schon der Gedanke: ich implementiere eine static Funktion, der ich etwas über die Klasse übergebe, und ein Ergebnis bekomme, könnte man genauso ohne Parameter als echte Methode implementieren. Hingegen der Singleton wird ja vor der Existenz eines Objekts aufgerufen und erzeugt dieses.</p>
<p>Oftmals wird allerdings vermittelt, dass die ganzen Methoden mit instantiiert werden und static Funktionen nur einmal existieren: Blödsinn! Mit anderen Worten man kommt ohne aus.<br />
Es gibt eine Hand voll Frameworks, die streng hierarchisch arbeiten und jede Klasse eine gleichnamige static Funktion implementieren muss, damit die Hierarchie funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283111</guid><dc:creator><![CDATA[PhilippHToner]]></dc:creator><pubDate>Tue, 25 Dec 2012 13:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 14:28:34 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich finde die Philosophie[,] sich boost [für ein bisschen TicTacToe] reinzuholen[,] echt für [ü]bertrieben.</p>
</blockquote>
<p>Es geht nicht darum, für welche Größenordnungen von Projekten man Boost einbeziehen sollte.<br />
Boost ist - mittlerweile - zu einer Ergänzung der Standardbibliothek geworden, und wird mittlerweile auch so konsistent genutzt wie diese; es ist fast gar nicht mehr wegzudenken.<br />
(Vgl. mit welcher Nebenläufigkeit Boost ins Spiel kam)</p>
<p>Daher sollte es für den C++-Programmierer mMn keinen bemerkenswerten Aufwand darstellen, Boost in seine Projekte einzubinden.</p>
<p>Folglich kann es nicht für übertrieben gehalten werden, genau das zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283122</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 25 Dec 2012 14:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 15:54:29 GMT]]></title><description><![CDATA[<p>PhilippHToner schrieb:</p>
<blockquote>
<p>Alleine schon der Gedanke: ich implementiere eine static Funktion, der ich etwas über die Klasse übergebe, und ein Ergebnis bekomme, könnte man genauso ohne Parameter als echte Methode implementieren. Hingegen der Singleton wird ja vor der Existenz eines Objekts aufgerufen und erzeugt dieses.</p>
</blockquote>
<p>Im Falle von FindWinner übergebe ich zwar auch die Membervar m_PlayGround[][]. Allerdings verwende ich diese Funktion auch für die KI, um Spielzüge und damit eben auch andere Spielfelder zu bewerten. Daher als Parameter das Spielfeld.</p>
<blockquote>
<p>Für ein einfaches 2D-Array nimm einen Wrapper um einen 1D-vector, der die Indizes passend umbricht.</p>
</blockquote>
<p>Es handelt sich ja um eine Feld mit statischer Größe Weite x Höhe, in dem Fall eben 3x3.<br />
Warum soll ich da überhaupt einen vector verwenden, der ja dynamisch Speicher anfordert?<br />
Ein Wrapper um ein 2d Array, welchem ich mit Template Parametern die Größe sowie den Typ zuweise sollte doch reichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283140</guid><dc:creator><![CDATA[static_function_frage]]></dc:creator><pubDate>Tue, 25 Dec 2012 15:54:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 17:23:53 GMT]]></title><description><![CDATA[<p>Viel schlimmer ist doch den Namen der Klassen mit &quot;C&quot; zu beginnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283165</guid><dc:creator><![CDATA[namer]]></dc:creator><pubDate>Tue, 25 Dec 2012 17:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 17:47:09 GMT]]></title><description><![CDATA[<p><code>multi_array</code> und <code>PlayGroundSize</code> für ein Tic-Tac-Toe sind IMHO so sinnvoll wie<br />
<code>const unsigned int days_in_week=7;</code> für einen Kalender...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283186</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 25 Dec 2012 17:47:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 17:49:06 GMT]]></title><description><![CDATA[<p><em>Muss</em> man Tic-Tac-Toe auf 3x3 spielen?<br />
<em>Muss</em> eine Marswoche auch 7 Tage haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283188</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 25 Dec 2012 17:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 18:04:55 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p><em>Muss</em> man Tic-Tac-Toe auf 3x3 spielen?<br />
<em>Muss</em> eine Marswoche auch 7 Tage haben?</p>
</blockquote>
<p>Ein Tic-Tac-Toe hat 9 Felder. Es kann aber sicherlich auch im 8 dimensionalen gespielt werden mit einer dementsprechenden Anzahl von Feldern...<br />
Bei der &quot;Woche&quot; auf dem Mars: klär mich auf...<br />
Ich jedenfalls bin nicht der Meinung alles parametrisierbar machen zu müssen - Z.B. ein klassischen Tic-Tac-Toe und ein Wochenplaner für Erdzeit...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283199</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 18:05:38 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p><em>Muss</em> man Tic-Tac-Toe auf 3x3 spielen?<br />
<em>Muss</em> eine Marswoche auch 7 Tage haben?</p>
</blockquote>
<p>Bist du auch so einer der</p>
<pre><code>const int Eins = 1;
</code></pre>
<p>macht, für den Fall, dass 1 mal seinen Wert ändern könnte? Man muss nicht immer alles bis zum letzten abstrahieren.</p>
<p>Hier würde ich weder Vectorwrapper noch multiarray und erst recht nicht vector&lt;vector&gt; benutzen. Das sind 9 ints oder vergleichbare Datentypen! Also eine kleine(!) Compilezeitkonstante. <code>std::array&lt;Feldtyp, 9&gt;</code> oder (je nachdem, wie man es ansprechen möchte) <code>array&lt;array&lt;Feldtyp, 3&gt;, 3&gt;</code> würde ich als unterliegende Datentstruktur benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283200</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 18:11:10 GMT]]></title><description><![CDATA[<p>Im Kumbha stehst an: <a href="http://de.wikipedia.org/wiki/Darischer_Kalender#Aufbau_des_Kalenders" rel="nofollow">http://de.wikipedia.org/wiki/Darischer_Kalender#Aufbau_des_Kalenders</a> <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/2283203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283203</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 18:41:26 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Im Kumbha stehst an: <a href="http://de.wikipedia.org/wiki/Darischer_Kalender#Aufbau_des_Kalenders" rel="nofollow">http://de.wikipedia.org/wiki/Darischer_Kalender#Aufbau_des_Kalenders</a> <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>Dammit!<br />
Eigentlich spiele ich jeden Samstagabend <a href="http://en.wikipedia.org/wiki/Quantum_tic_tac_toe" rel="nofollow">Quantum Tic-Tac-Toe</a> mit den Kumpels... <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/2283212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283212</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Tue, 25 Dec 2012 18:48:49 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Bist du auch so einer [...]</p>
</blockquote>
<p>Manchmal. <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/2283215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283215</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 25 Dec 2012 18:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 09:41:10 GMT]]></title><description><![CDATA[<p>Tatsächlich habe ich nur gesagt, <code>multi_array</code> wäre besser als <code>vector&lt; vector&lt;&gt; &gt;</code> . Denn mit Multiarray kann man (neben den im Doc. genannten Vorteilen) bspw. wenigstens noch slicen und damit leichter das Feld nach Sequenzen abprüfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Trotzdem ist natürlich <code>std::array</code> viel passender. Ich würde dann schon verschachteln, ist schließlich nur eine 3x3-Matrix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283222</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Dec 2012 09:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 05:15:06 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Tatsächlich habe ich nur gesagt, <code>multi_array</code> wäre besser als <code>vector&lt; vector&lt;&gt; &gt;</code> . Denn mit Multiarray kann man wenigstens noch slicen und damit leichter das Feld nach Sequenzen abprüfen.</p>
<p>Trotzdem ist natürlich <code>std::array</code> viel passender. Ich würde dann schon verschachteln, ist schließlich nur eine 3x3-Matrix.</p>
</blockquote>
<p>Wenn alle Anfänger (includes Sone) verwirrt sind, behaupten wir am Ende das Gegenteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283288</guid><dc:creator><![CDATA[lol...]]></dc:creator><pubDate>Wed, 26 Dec 2012 05:15:06 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 12:57:20 GMT]]></title><description><![CDATA[<p>muss man alles unnötig kompliziert machen?<br />
Muss der Code voll mit boost und Templates sein?</p>
<p>Es geht um eine 3x3 Matrix. Da macht man halt eine Klasse mit einem &quot;alten&quot; C Array der Länge 9 und stellt Funktionen für den Zugriff zur Verfügung. Fertig.</p>
<p>Manchen würde mal etwas embedded Programmierung gut tun. Da sieht man dann auch mal, dass Abstraktion hoch 1000 nicht immer die beste Lösung ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283312</guid><dc:creator><![CDATA[lalalazzzzz]]></dc:creator><pubDate>Wed, 26 Dec 2012 12:57:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 13:01:09 GMT]]></title><description><![CDATA[<p>lalalazzzzz schrieb:</p>
<blockquote>
<p>muss man alles unnötig kompliziert machen?<br />
Muss der Code voll mit boost und Templates sein?</p>
</blockquote>
<p>Wer hat was von Templates gesagt?<br />
Zu Boost habe ich bereits weiter oben was gesagt.</p>
<blockquote>
<p>Manchen würde mal etwas embedded Programmierung gut tun. Da sieht man dann auch mal, dass Abstraktion hoch 1000 nicht immer die beste Lösung ist.</p>
</blockquote>
<p>Hab ich schon.<br />
Hat an meiner Meinung nichts geändert.</p>
<p>lol... schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Tatsächlich habe ich nur gesagt, <code>multi_array</code> wäre besser als <code>vector&lt; vector&lt;&gt; &gt;</code> . Denn mit Multiarray kann man wenigstens noch slicen und damit leichter das Feld nach Sequenzen abprüfen.</p>
<p>Trotzdem ist natürlich <code>std::array</code> viel passender. Ich würde dann schon verschachteln, ist schließlich nur eine 3x3-Matrix.</p>
</blockquote>
<p>Wenn alle Anfänger (includes Sone) verwirrt sind, behaupten wir am Ende das Gegenteil.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Wovon redest du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283314</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Dec 2012 13:01:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 13:17:51 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>lalalazzzzz schrieb:</p>
<blockquote>
<p>muss man alles unnötig kompliziert machen?<br />
Muss der Code voll mit boost und Templates sein?</p>
</blockquote>
<p>Wer hat was von Templates gesagt?</p>
</blockquote>
<p>Na was ist ein <code>boost::multi_array</code> ?</p>
<p>Sone schrieb:</p>
<blockquote>
<p>lalalazzzzz schrieb:</p>
<blockquote>
<p>Manchen würde mal etwas embedded Programmierung gut tun. Da sieht man dann auch mal, dass Abstraktion hoch 1000 nicht immer die beste Lösung ist.</p>
</blockquote>
<p>Hab ich schon.</p>
</blockquote>
<p>Erzähl?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283319</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 26 Dec 2012 13:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wann static Methoden verwenden? on Wed, 26 Dec 2012 13:38:04 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>lalalazzzzz schrieb:</p>
<blockquote>
<p>muss man alles unnötig kompliziert machen?<br />
Muss der Code voll mit boost und Templates sein?</p>
</blockquote>
<p>Wer hat was von Templates gesagt?</p>
</blockquote>
<p>Na was ist ein <code>boost::multi_array</code> ?</p>
</blockquote>
<p>Ja, aber man schreibt selbst kein Template dafür, das meinte ich und das zählt schließlich.<br />
Oder was ist <code>std::swap</code> ? Würde jemand sagen, man benutzt Templates in einem Projekt, wenn man <code>std::swap</code> einmal aufruft?</p>
<p>Edit: Schon klar, dass multi_array da expliziter als Template zum Vorschein kommt.</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>lalalazzzzz schrieb:</p>
<blockquote>
<p>Manchen würde mal etwas embedded Programmierung gut tun. Da sieht man dann auch mal, dass Abstraktion hoch 1000 nicht immer die beste Lösung ist.</p>
</blockquote>
<p>Hab ich schon.</p>
</blockquote>
<p>Erzähl?</p>
</blockquote>
<p><a href="http://www.arexx.com/rp6/html/de/index.htm" rel="nofollow">http://www.arexx.com/rp6/html/de/index.htm</a><br />
Mit AVR-GCC programmiert. Da gab es z. T. keine Standardbibliothek.</p>
<p>Edit: Nennt der Standard auch <em>freestanding implementation</em> :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2283324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2283324</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 26 Dec 2012 13:38:04 GMT</pubDate></item></channel></rss>