<?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[Gute Pointer-Array Lösung gesucht]]></title><description><![CDATA[<p>Ziel ist es alle vom Programm benötigten Daten in einer Klasse Datenbank zu halten:</p>
<pre><code class="language-cpp">class Database
{
 std::vector&lt;Person&gt; PersonenArray;
 std::vector&lt;Firma&gt;  FirmenArray;

 ...
 ...
};
</code></pre>
<p>Nun sollen verschiedene andere Klassen auf die Objekte in der Datenbank zugreifen und diese verändern können. Um nicht bei jeder Firma das gesamte PersonenArray durchsuchen zu müssen soll die Klasse Firma aber ein Pointer-Array auf die Personen welche in der jeweiligen Firma angestellt sind.</p>
<pre><code class="language-cpp">class Firma
{
 std::string Name;
 std::vector&lt;Person*&gt; ListederAngestellten;
 ...
};
</code></pre>
<p>So ganz einfach ist das aber nicht, Pointer auf ein Vektor-Eintrag sind bekanntlich nur bis zum nächsten push_back() gültig. Und die Daten in der Datenbank bereits als Pointer zu speichern birgt dann enormen new / delete - Einsatz auch einige Gefahren (und macht damit die Vorteile die std::vector bringt wieder zunichte). Gibt es eine gute Container-Bibliothek welche die Objekte nicht immer wieder neu verschiebt? oder kennt jemand eine Lösung wie man das ein wenig geschickter lösen kann? Die Daten sollten wenn möglich immer nur in der Datenbank-Klasse selbst sein, andere Klassen sollten mit Referenzen arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297214/gute-pointer-array-lösung-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 14:32:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297214.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Dec 2011 12:41:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gute Pointer-Array Lösung gesucht on Wed, 21 Dec 2011 12:41:50 GMT]]></title><description><![CDATA[<p>Ziel ist es alle vom Programm benötigten Daten in einer Klasse Datenbank zu halten:</p>
<pre><code class="language-cpp">class Database
{
 std::vector&lt;Person&gt; PersonenArray;
 std::vector&lt;Firma&gt;  FirmenArray;

 ...
 ...
};
</code></pre>
<p>Nun sollen verschiedene andere Klassen auf die Objekte in der Datenbank zugreifen und diese verändern können. Um nicht bei jeder Firma das gesamte PersonenArray durchsuchen zu müssen soll die Klasse Firma aber ein Pointer-Array auf die Personen welche in der jeweiligen Firma angestellt sind.</p>
<pre><code class="language-cpp">class Firma
{
 std::string Name;
 std::vector&lt;Person*&gt; ListederAngestellten;
 ...
};
</code></pre>
<p>So ganz einfach ist das aber nicht, Pointer auf ein Vektor-Eintrag sind bekanntlich nur bis zum nächsten push_back() gültig. Und die Daten in der Datenbank bereits als Pointer zu speichern birgt dann enormen new / delete - Einsatz auch einige Gefahren (und macht damit die Vorteile die std::vector bringt wieder zunichte). Gibt es eine gute Container-Bibliothek welche die Objekte nicht immer wieder neu verschiebt? oder kennt jemand eine Lösung wie man das ein wenig geschickter lösen kann? Die Daten sollten wenn möglich immer nur in der Datenbank-Klasse selbst sein, andere Klassen sollten mit Referenzen arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159677</guid><dc:creator><![CDATA[Rookie86]]></dc:creator><pubDate>Wed, 21 Dec 2011 12:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Gute Pointer-Array Lösung gesucht on Wed, 21 Dec 2011 12:45:05 GMT]]></title><description><![CDATA[<p><code>std::list</code> , aber für sowas würde ich eine richtige Datenbank benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159678</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 21 Dec 2011 12:45:05 GMT</pubDate></item><item><title><![CDATA[Reply to Gute Pointer-Array Lösung gesucht on Wed, 21 Dec 2011 13:08:34 GMT]]></title><description><![CDATA[<p>Mit std::list funktioniert es tatsächlich... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Naja, manchmal sucht man viel zu weit...</p>
<p>Die Frage nach einer richtigen Datenbank habe ich mir auch schon gestellt, wäre aber doch ein bisschen viel overhead, vorallem wenn es mit std::list auch funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159690</guid><dc:creator><![CDATA[Rookie86]]></dc:creator><pubDate>Wed, 21 Dec 2011 13:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Gute Pointer-Array Lösung gesucht on Wed, 21 Dec 2011 13:10:11 GMT]]></title><description><![CDATA[<p>Nur so als Idee:</p>
<p>Direkten Zugriff auf Objekte nur über Database; Database ist führendes System und verantwortlich für die einzelnen Objekte.</p>
<p>Objekte haben eine ObjektID und werden nur über diese referenziert.</p>
<p>Firma hat eine Liste von ObjektIDs, welche darüber Personen referenziert.</p>
<p>Wenn in Database eine Person gelöscht wird, hat die Firma ggf. eine ObjektID, welche in Database nicht mehr gefunden wird; so was ist einfacher zu händeln.</p>
<p>Gruß Helmut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2159693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2159693</guid><dc:creator><![CDATA[Helmut.Jakoby]]></dc:creator><pubDate>Wed, 21 Dec 2011 13:10:11 GMT</pubDate></item></channel></rss>