<?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[Vector in Array speichern]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche gerade einen Vector mit Pointern zu meinem eigenen Objekt zu erstellen, diesen Vector packe ich in ein Array:</p>
<pre><code class="language-cpp">std::vector&lt;Piece*&gt; m_allPieces[2];
</code></pre>
<p>Das Problem ist, wenn ich mein Programm so kompiliere erhalte ich einen Memory Error und das ganze stürzt ab ^^</p>
<p>Wie soll ich das jetzt lösen? Vector in Vector???</p>
<p>Hab grade herausgefunden, dass das ganze gar nicht an dem Array liegt, wenn ich einen Vector deklariere im Header, stürzt das Program sofort ab... aber zum Beispiel ein Iterator funktioniert (Kann ihn schlecht benutzen oder einen vector xD)</p>
<p>Aber ich erhalte nun eine Fehlermeldung: (Windows Meldung)</p>
<p>Ausnahme: std::bad_alloc</p>
<p>hmm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259146/vector-in-array-speichern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 21:22:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259146.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 19 Jan 2010 17:19:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:28:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich versuche gerade einen Vector mit Pointern zu meinem eigenen Objekt zu erstellen, diesen Vector packe ich in ein Array:</p>
<pre><code class="language-cpp">std::vector&lt;Piece*&gt; m_allPieces[2];
</code></pre>
<p>Das Problem ist, wenn ich mein Programm so kompiliere erhalte ich einen Memory Error und das ganze stürzt ab ^^</p>
<p>Wie soll ich das jetzt lösen? Vector in Vector???</p>
<p>Hab grade herausgefunden, dass das ganze gar nicht an dem Array liegt, wenn ich einen Vector deklariere im Header, stürzt das Program sofort ab... aber zum Beispiel ein Iterator funktioniert (Kann ihn schlecht benutzen oder einen vector xD)</p>
<p>Aber ich erhalte nun eine Fehlermeldung: (Windows Meldung)</p>
<p>Ausnahme: std::bad_alloc</p>
<p>hmm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841516</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:28:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:27:01 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Ich versuche gerade einen Vector mit Pointern zu meinem eigenen Objekt zu erstellen, diesen Vector packe ich in ein Array:</p>
</blockquote>
<p>Tönt kompliziert. Was willst du genau erreichen (was, nicht wie)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841522</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:27:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:28:48 GMT]]></title><description><![CDATA[<p>Dein Fehler liegt nicht in der Verwendung von vector-Arrays an sich. Das ist kein Problem. Folglich machst du bei deren Verwendung irgendwas falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841527</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:31:41 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Dein Fehler liegt nicht in der Verwendung von vector-Arrays an sich. Das ist kein Problem. Folglich machst du bei deren Verwendung irgendwas falsch.</p>
</blockquote>
<p>Nunja ich verwende mein Vector noch gar nirgends, ich deklariere ihn bloss im Header...</p>
<p>Ich werde versuchen eine genauere Fehlermeldung rauszubekommen ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841532</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:34:55 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Nunja ich verwende mein Vector noch gar nirgends, ich deklariere ihn bloss im Header...</p>
</blockquote>
<p>Dann liegt es sicher nicht daran. Zeige doch mal etwas Code.</p>
<p>Und es wäre gut, wenn du noch auf meine obere Frage eingehen könntest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841535</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:38:49 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Samyboy schrieb:</p>
<blockquote>
<p>Ich versuche gerade einen Vector mit Pointern zu meinem eigenen Objekt zu erstellen, diesen Vector packe ich in ein Array:</p>
</blockquote>
<p>Tönt kompliziert. Was willst du genau erreichen (was, nicht wie)?</p>
</blockquote>
<p>Nunja ich versuche alle meine Schachfiguren in ein Array von 2 Vectoren zu speichern (alle Weisse in m_allPieces[0] und alle Schwarzen in m_allPieces[1], weil WHITE und BLACK konstante 0 und 1 sind...)</p>
<p>Danach möchte ich sie einzeln ansprechen können, um die Position herauszufinden und so weiter...</p>
<p>Ich könnte natürlich mein &quot;main-board&quot; Array durchlaufen, aber da hab ich halt die Schwarzen und Weissen Figuren nicht getrennt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841537</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 17:44:36 GMT]]></title><description><![CDATA[<p>Hab noch etwas herausgefunden, mein Programm stürzt nur ab, wenn ich 2 Objekte vom Typ Vector initialisiere, also z.B</p>
<p>2 vector&lt;Piece*&gt;<br />
2 vector&lt;Piece*&gt;::iterator<br />
1 vector&lt;Piece*&gt; und 1 vector&lt;Piece*&gt;::iterator</p>
<p>Hier mal meine Board Klasse, die betroffen ist:</p>
<pre><code class="language-cpp">class Board {
    public:
        Board();
        ~Board();

        void Draw(sf::RenderWindow* window);
        bool MoveIsLegal(int move[2][2], unsigned int&amp; player);
        void DoMove(int move[2][2]);
        void Reset();
        void AddPiece(Piece* piece, int position[2]);
        Piece* GetPosition(int position[2]);

        // std::vector&lt;Piece*&gt; GetThreateningPieces(int position[2]);

    private:
        Piece* m_board[8][8];
        std::vector&lt;Piece*&gt; m_allPiecesWhite;
        // std::vector&lt;Piece*&gt; m_allPiecesBlack; // Wenn das kein Kommentar ist stürzts ab!
        // std::vector&lt;Piece*&gt;::iterator iter;
        char m_boardWithLetters[8][8];
        void DeletePiece(int position[2], int color);
};
</code></pre>
<p>Wenn ich sonst noch Code zeigen soll, bitte sagen! Bin echt dankbar für jede Hilfe, bin jetzt schon etwa ne Stunde dran :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841541</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 17:44:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:00:11 GMT]]></title><description><![CDATA[<p>Das ist zwar grauenhaftes Design, aber an sich noch kein Fehler.</p>
<p>Meine Glaskugel sagt aber, dass du bestimmt was falsch machst bei der Pointerfrickelei.</p>
<p>Empfohlener Ansatz zur Problembehebung: Schmeiß alles weg. Überdenke dein Schachproblem. Mach ein neues, sauberes Design. -&gt; Proft!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841550</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:01:37 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Das ist zwar grauenhaftes Design, aber an sich noch kein Fehler.</p>
<p>Meine Glaskugel sagt aber, dass du bestimmt was falsch machst bei der Pointerfrickelei.</p>
<p>Empfohlener Ansatz zur Problembehebung: Schmeiß alles weg. Überdenke dein Schachproblem. Mach ein neues, sauberes Design. -&gt; Proft!</p>
</blockquote>
<p>Könnteste bitte konkret werden mit Design?</p>
<p>Ich habe das Gefühl das ÜBERHAUPT NICHTS lesbar ist bei meinem Schachprogramm, und ans neu machen hab ich auch schon gedacht ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841553</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:01:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:03:00 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Könnteste bitte konkret werden mit Design?</p>
</blockquote>
<p>Ja, wenn du mit deinen Anforderungen konkret wirst. Was soll das Programm denn können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841554</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:33:49 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Samyboy schrieb:</p>
<blockquote>
<p>Könnteste bitte konkret werden mit Design?</p>
</blockquote>
<p>Ja, wenn du mit deinen Anforderungen konkret wirst. Was soll das Programm denn können?</p>
</blockquote>
<p>Naja, ich meinte was vom Design her schlecht ist bei dieser Klasse <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>Und noch etwas, komischerweise kann ich einen Vector deklarieren, auch ohne #include &lt;vector&gt;? (trotzdem können nicht mehrere vectoren deklariert werden (auch nicht in einem Array z.B), sonst stürzt das ganze ab) Ich glaube die SFML Library nervt da irgendwie die Vectoren oder so oO</p>
<p>Sehr, sehr komisch -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841565</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:41:11 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung:</p>
<p>(Falls es jemanden was bringt, ich werde nicht schlau draus, leider keine Zeilen angegeben xD)</p>
<pre><code class="language-cpp">Eine Ausnahme (erste Chance) bei 0x778d3913 in SMFL.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x20202020.
Eine Ausnahme (erste Chance) bei 0x778d3913 in SMFL.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x20202020.
Eine Ausnahme (erste Chance) bei 0x778d3913 in SMFL.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x20202020.
Eine Ausnahme (erste Chance) bei 0x76f3b727 in SMFL.exe: Microsoft C++-Ausnahme: std::bad_alloc an Speicherposition 0x0044f514..
Eine Ausnahme (erste Chance) bei 0x6780fd85 in SMFL.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.
Unbehandelte Ausnahme bei 0x6780fd85 in SMFL.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1841569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841569</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:45:07 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Samyboy schrieb:</p>
<blockquote>
<p>Könnteste bitte konkret werden mit Design?</p>
</blockquote>
<p>Ja, wenn du mit deinen Anforderungen konkret wirst. Was soll das Programm denn können?</p>
</blockquote>
<p>Naja, ich meinte was vom Design her schlecht ist bei dieser Klasse <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>
</blockquote>
<p>Wie du schon selbst schreibst, ist dein Programm praktisch unlesbar. Außerdem fuchtelst du ohne erkennbaren Grund mit rohen Pointern rum, was gerade bei unerfahrenen Programmierern fast immer schief geht, so auch bei dir. Ich werde mir mal kurz Gedanken machen wie ich ein Schachbrett mit deinen Methoden modellieren würde. Melde mich in ein paar Minuten wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841574</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 18:51:51 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Samyboy schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Samyboy schrieb:</p>
<blockquote>
<p>Könnteste bitte konkret werden mit Design?</p>
</blockquote>
<p>Ja, wenn du mit deinen Anforderungen konkret wirst. Was soll das Programm denn können?</p>
</blockquote>
<p>Naja, ich meinte was vom Design her schlecht ist bei dieser Klasse <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>
</blockquote>
<p>Wie du schon selbst schreibst, ist dein Programm praktisch unlesbar. Außerdem fuchtelst du ohne erkennbaren Grund mit rohen Pointern rum, was gerade bei unerfahrenen Programmierern fast immer schief geht, so auch bei dir. Ich werde mir mal kurz Gedanken machen wie ich ein Schachbrett mit deinen Methoden modellieren würde. Melde mich in ein paar Minuten wieder.</p>
</blockquote>
<p>Nunja, sollte man nicht möglichs jedes Objekt auf dem Heap speichern und dann die Pointer herumschicken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841583</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Tue, 19 Jan 2010 18:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 19:13:57 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Nunja, sollte man nicht möglichs jedes Objekt auf dem Heap speichern und dann die Pointer herumschicken?</p>
</blockquote>
<p>Nein, auf keinen Fall! Denk dran, Value-Semantik ist gut. Benutze möglichst automatische Objekte. Wenn du besitzende Zeiger brauchst, kapsle sie (Smart-Pointer, Pointer-Container oder ähnliches). Aber im Anwendungscode sollte <code>new</code> und <code>delete</code> so wenig wie nur möglich auftauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841602</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 19 Jan 2010 19:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Tue, 19 Jan 2010 20:01:22 GMT]]></title><description><![CDATA[<p>Hier ist mal ein Anfang, mit dem man arbeiten kann. Du musst nur noch die Methoden Implementieren, was in den meisten Fällen trivial sein sollte. Das schwierige, wo die Magie passiert, ist Coordinates::valid_move().</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
#include &lt;cassert&gt;

enum Color{white, black};
enum Value{empty, pawn, knight, bishop, rook, queen, king};

// A set of coordinates on a chess board
class Coordinates
{
private:
  unsigned rank, file;
public:
  Coordinates(unsigned x, unsigned y): file(x), rank(y)
  {
    assert(x&lt;8);
    assert(y&lt;8);
  };

  // Checks if other square is a valid move for a &lt;v&gt; from this coordinate:
  bool valid_move(Value v, Coordinates c) const;

};

class Square
{
private:
  // What kind of piece is on the square?
  Value i_value;
  // The color of the piece on the square. Ignored if value is empty.
  Color i_color; 

public:
  Square(Value v, Color c=white): i_value(v), i_color(c){};

  // Draw the piece on output
  void draw(sf::RenderWindow* window) const;

  void set(Value v, Color c=white);

  // Getter:
  Value get_piece();
  Color get_color();
};

// A chessboard
class Board
{
private:
  std::vector&lt;Square&gt; i_squares[64];
  // Returns reference to square at coordinates
  Square&amp; at(Coordinates c);
public:
  // Draws a chessboard and calls draw for all squares
  void draw(sf::RenderWindow* window) const;

  // Set piece at position
  void AddPiece(Coordinates coordinates, Value v, Color c=white);

  // Check if move is legal for player
  bool MoveIsLegal(Coordinates from, Coordinates to, Color player) const;

  // Move a piece
  void DoMove(Coordinates from, Coordinates to);

  // Sets all squares to empty
  void Reset();

  // Resets all squares to the initial value for a standard game
  void InitialPosition();

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1841635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841635</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 19 Jan 2010 20:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 09:45:14 GMT]]></title><description><![CDATA[<p>Bis auf</p>
<pre><code class="language-cpp">std::vector&lt;Square&gt; i_squares[64];
</code></pre>
<p>ein (ganz) gutes Design.</p>
<p>SeppJ, du meinst wohl eher, daß der vector mit 64 Feldern (Square) initialisiert wird, und nicht, daß du 64 vectors erzeugst?</p>
<p>Und Coordinates::valid_move() wird ohne Zugriff auf das Schachbrett auch nicht sehr sinnvoll sein (d.h. z.B. bei Bauern und Königen ist auch die Farbe entscheidend).</p>
<p>Und ich würde auch noch die Trennung von GUI (SFML) und Logic (ChessBoard) vornehmen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841840</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 20 Jan 2010 09:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 09:56:24 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>Nunja, sollte man nicht möglichs jedes Objekt auf dem Heap speichern und dann die Pointer herumschicken?</p>
</blockquote>
<p>Wenn ein Objekt erst einmal mit new angelegt wurde ist alles was von diesem Objekt ausgeht (Member) automatisch im Heap und nicht im Stack des Programms (des main-Funktionsaufrufes). Geht gar nicht anders. Nur wenn du etwas dann mit new anlegst ist es eben ein beliebiger Speicherbereich und nicht mehr zusammenhängend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841846</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 20 Jan 2010 09:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 11:27:05 GMT]]></title><description><![CDATA[<p>Wenn ich zum Design noch was anmerken dürfte:<br />
Die Methoden Draw( ... ) gehören da eindeutig nicht zu Square und auch nicht zu Board, du solltest Logik und Darstellung trennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841909</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 20 Jan 2010 11:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 12:04:18 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Bis auf</p>
<pre><code class="language-cpp">std::vector&lt;Square&gt; i_squares[64];
</code></pre>
<p>ein (ganz) gutes Design.</p>
<p>SeppJ, du meinst wohl eher, daß der vector mit 64 Feldern (Square) initialisiert wird, und nicht, daß du 64 vectors erzeugst?</p>
</blockquote>
<p>Ups, ähh, ja.</p>
<blockquote>
<p>Und Coordinates::valid_move() wird ohne Zugriff auf das Schachbrett auch nicht sehr sinnvoll sein (d.h. z.B. bei Bauern und Königen ist auch die Farbe entscheidend).</p>
</blockquote>
<p>Ich hatte mir gedacht, dass die Methode Board::MoveIsLegal() das macht und dabei Coordinates::valid_move() benutzt um überhaupt zu prüfen, wohin gegangen werden kann. Ist sicherlich noch suboptimal, da ich mir nicht wirklich Gedanken gemacht habe, wie man das implementieren würde.</p>
<blockquote>
<p>Und ich würde auch noch die Trennung von GUI (SFML) und Logic (ChessBoard) vornehmen...</p>
</blockquote>
<p>Ahh, die Urfrage der Spieleprogrammierung. Irgendwie konnte mir nie jemand sagen, welche Vorgehensweise besser ist (ich programmiere aber auch nicht viele Spiele). Ist momentan die Trennung von Logik und Darstellung wieder in?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841930</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 20 Jan 2010 12:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 12:24:42 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ist momentan die Trennung von Logik und Darstellung wieder in?</p>
</blockquote>
<p>Ich glaube dies war eigentlich nie out. Wobei man abwägen muss: Ist Wartbarkeit und Portierbarkeit wichtiger als der zusätzliche Aufwand?</p>
<p>Ich arbeite derzeit in einem Projekt, wo es besser gewesen wäre auf ersteres zu setzen. Eine nachträgliche Änderung ist in loser gekoppelten Systemen immer einfacher als in fest &quot;verdrahteten&quot; Systemen. Selbst wenn es nicht um den Austausch der Ausgabeform geht, sondern nur der Anpassung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1841949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1841949</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 Jan 2010 12:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Wed, 20 Jan 2010 19:03:44 GMT]]></title><description><![CDATA[<p>Dankeschön für die tollen Tipps und Ideen! (Vor allem Dir Sepp)</p>
<p>Ich guck mir das ganze mal in RUhe an <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/1842187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842187</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Wed, 20 Jan 2010 19:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Thu, 21 Jan 2010 18:03:32 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ahh, die Urfrage der Spieleprogrammierung. Irgendwie konnte mir nie jemand sagen, welche Vorgehensweise besser ist (ich programmiere aber auch nicht viele Spiele). Ist momentan die Trennung von Logik und Darstellung wieder in?</p>
</blockquote>
<p>Ich bevorzuge die Trennung ganz klar (zumindest sobald ein Projekt etwas grösser ist). Ich denke, der Aufwand ist nur gerade am Anfang höher, wenn man eine Schnittstelle einrichten muss, die eine Verbindung von Logik- und Grafikobjekten herstellt. Aber ich sehe ab und zu Leute, die das nicht so genau nehmen. Oft sind das auch jene, die sich mehr für fertige Spiele als unnötige technische Details wie C++ interessieren. <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>
<p>Aber auch bei fortgeschrittenenen Programmierern sieht man diese Vorgehensweise nicht selten. Natürlich kann es Fälle geben, in denen eine Trennung unangebracht ist. Doch meiner Meinung nach ist der Hauptgrund einfach oft eine kurzsichtige Denkweise (betrifft übrigens generell Designfragen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842814</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 21 Jan 2010 18:03:32 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Thu, 21 Jan 2010 18:48:08 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Aber auch bei fortgeschrittenenen Programmierern sieht man diese Vorgehensweise nicht selten.</p>
</blockquote>
<p>Logisch wenn die Planung nur auf schnelle Ergebnisse ausgelegt ist. Im Endeffekt wird es aber für alle teurer. Sei es nun, weil nicht erwartet wurde das man später nochmal auf das Design aufsetzen muss, sei es weil ein Projekt einen deutlich längeren Lebenszyklus erfährt, oder weil man den Kunden immer alle Wünsche gestern erfüllen will.</p>
<p>Es wird blauäugig an Projekte herangegangen. Die Faulheit einiger Programmierer fördert dies zusätzlich (Warum den Aufwand betreiben &quot;unnötige&quot; Dokumentationen zu verfassen, Schichtentrennungen vorzunehmen oder &quot;unsinnige&quot; Diskussionen am Tisch durchzuführen). Das Ergebnis ist zwar vielleich (wenn alles gut geht) tatsächlich schneller auf dem Weg zum Kunden, aber in der Regel dauert die Fehlerkorrektur, der Einbau neuer Features etc. immer länger.</p>
<p>Am Schluß hat man ein Flickenteppich. Ein Programm das nach außen hin wie ein schillerndes 200-Etagen Hochhaus mit Hightech-Glasaufzug aussieht, aber sich im inneren auf eine morsche Bruchbude aufstützt, bei der Fehler seltener behoben als &quot;umschifft&quot; werden, da die Zeit zum Beheben nicht eingeräumt wird.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Natürlich kann es Fälle geben, in denen eine Trennung unangebracht ist. Doch meiner Meinung nach ist der Hauptgrund einfach oft eine kurzsichtige Denkweise (betrifft übrigens generell Designfragen).</p>
</blockquote>
<p>Vollkommen richtig. Der Haken daran ist nur, das solche &quot;hirnrissigen&quot;, &quot;idealistischen&quot; Gedankengänge ja nur von den &quot;Programmierern&quot; stammen können, die über &quot;keinerlei wirtschaftliches Denkvermögen&quot; verfügen.</p>
<p>Ich behaupte das mancherlei Programmierer/Softwareentwickler mehr Ahnung von einer sinnvollen Projektplanung haben, als Manager. Ein Erfolg einer Software setzt sich halt nicht nur aus dem schnellen &quot;Cashflow&quot; zusammen, sondern auch langfristigeren Aspekten wie Kundenzufriedenheit und teilweise daraus resultierender Kundenbindung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1842824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842824</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 21 Jan 2010 18:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Vector in Array speichern on Thu, 21 Jan 2010 20:20:12 GMT]]></title><description><![CDATA[<p>Also die Trennung von Darstellung (z.B. GUI), Logik und eigentlich sogar Datenspeicherung (DAL) sollte eigentlich bei jedem Projekt von vornherein feststehen. Auch wenn ich selber kein Verfechter einzelner Design-Patterns (MVC, MVVM, PAC, ...) bin, so sollte die modulare Software-Entwicklung generell immer im Vordergrund stehen. Das liegt bei mir auch daran, daß ich in meinem Berufsleben bisher häufig bestehende Systeme umschreiben bzw. neuschreiben mußte, weil es nicht möglich war dort einzelne Teile auszutauschen (z.Z. arbeite ich an einem C# Projekt, dessen Vorgänger in VB geschrieben wurde und dort einfach von internen Klassen direkt auf die GUI-Form zugegriffen wurde!?! Bis auf das GUI-Layout habe ich keine einzige Zeile übernommen...).</p>
<p>Was aus einem einfachen Satz für eine Diskussion entstehen kann <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>P.S: asc, ich stimme dir voll zu!</p>
<p>Hier noch ein Auszug aus einem Skript, daß ich mal verfasst hatte (leider hatte der Verlag damals die dafür angedachte Buchreihe eingestellt):</p>
<p>Th69 schrieb:</p>
<blockquote>
<p>Als Entwickler sollte man ein Programm nicht zu starr konstruieren, da sich sonst Sonderwünsche und notwendige Erweiterungen nur widerwillig einbringen lassen. Ein Architekt, der nicht weiß, daß sein Haus auf unebenen Grund gebaut wird, kann nach dem Bau auch keine Änderungen mehr vornehmen, außer das Haus abzureißen und wieder von vorn anzufangen. Genau diese Vorgehensweise habe ich in der Praxis jedoch schon oft erlebt - das kostet Zeit und viele, viele Nerven.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1842908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1842908</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 21 Jan 2010 20:20:12 GMT</pubDate></item></channel></rss>