<?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[Verwaltung von Vektoren]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin noch recht neu in der C++ Programmierung und habe mal eine Frage zur Strukturierung:</p>
<p>in einer Verwaltungsklasse ( A ) sind mehrere Vektoren mit Zeigern auf verschiedene andere Klassen ( B, C ,...) definiert.</p>
<p>Class B<br />
{<br />
...<br />
}</p>
<p>Class C<br />
{<br />
...<br />
}</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C<br />
...<br />
}</p>
<p>Die Vektoren sollen jetzt mit Hilfe diverser Funktionen (Hinzufügen, Lösche, Holen, Setzen usw.) manipuliert werden.<br />
Meine Frage ist jetzt, wie man das am besten umsetzen sollte. Ich habe mal zwei Varianten versucht:</p>
<p>Variante 1 - Manipulationfunktionen sind Member von Klasse A:</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C</p>
<p>void Append ( B &amp;b ); // füge B zu list_b hinzu<br />
void Delete ( id ); // lösche objekt mit &quot;id&quot; aus list_b<br />
...<br />
}</p>
<p>Variante 2 - Manipulationfunktionen sind Statische Member von Klasse B:</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C</p>
<p>}</p>
<p>Class B<br />
{<br />
static void Append ( vector&lt;B *&gt; listb, B &amp;b ); // füge B zu listb hinzu<br />
static void Delete ( vector&lt;B *&gt; listb, id ); // lösche objekt mit &quot;id&quot; aus listb</p>
<p>}</p>
<p>in Variante 2 müsste man allerdings den Vektor aus Klasse A lesen um diesen dann an die jeweilige statische Funktion zu übergeben und danach zurückschreiben.</p>
<p>Grundsätzlich möchte ich vermeiden, das zu viele Funktionen in Klasse A hinein gestopft werden. Vielleich gibt es ja auch andere Lösungswege.<br />
ich hoffe ich habe mich verständlich ausgedrückt.</p>
<p>vielen Dank schon mal für jede Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/305649/verwaltung-von-vektoren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 14:35:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/305649.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jul 2012 10:30:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 10:30:33 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin noch recht neu in der C++ Programmierung und habe mal eine Frage zur Strukturierung:</p>
<p>in einer Verwaltungsklasse ( A ) sind mehrere Vektoren mit Zeigern auf verschiedene andere Klassen ( B, C ,...) definiert.</p>
<p>Class B<br />
{<br />
...<br />
}</p>
<p>Class C<br />
{<br />
...<br />
}</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C<br />
...<br />
}</p>
<p>Die Vektoren sollen jetzt mit Hilfe diverser Funktionen (Hinzufügen, Lösche, Holen, Setzen usw.) manipuliert werden.<br />
Meine Frage ist jetzt, wie man das am besten umsetzen sollte. Ich habe mal zwei Varianten versucht:</p>
<p>Variante 1 - Manipulationfunktionen sind Member von Klasse A:</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C</p>
<p>void Append ( B &amp;b ); // füge B zu list_b hinzu<br />
void Delete ( id ); // lösche objekt mit &quot;id&quot; aus list_b<br />
...<br />
}</p>
<p>Variante 2 - Manipulationfunktionen sind Statische Member von Klasse B:</p>
<p>Class A<br />
{<br />
vector&lt;B *&gt; list_b; // Liste von Zeigern auf Klasse B<br />
vector&lt;C *&gt; list_c; // Liste von Zeigern auf Klasse C</p>
<p>}</p>
<p>Class B<br />
{<br />
static void Append ( vector&lt;B *&gt; listb, B &amp;b ); // füge B zu listb hinzu<br />
static void Delete ( vector&lt;B *&gt; listb, id ); // lösche objekt mit &quot;id&quot; aus listb</p>
<p>}</p>
<p>in Variante 2 müsste man allerdings den Vektor aus Klasse A lesen um diesen dann an die jeweilige statische Funktion zu übergeben und danach zurückschreiben.</p>
<p>Grundsätzlich möchte ich vermeiden, das zu viele Funktionen in Klasse A hinein gestopft werden. Vielleich gibt es ja auch andere Lösungswege.<br />
ich hoffe ich habe mich verständlich ausgedrückt.</p>
<p>vielen Dank schon mal für jede Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229958</guid><dc:creator><![CDATA[volli]]></dc:creator><pubDate>Wed, 04 Jul 2012 10:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 10:40:09 GMT]]></title><description><![CDATA[<p>Gibt's einen tieferen Grund, hier überhaupt Pointer zu benutzen?</p>
<p>Die Variante 2 ist jedenfalls kompletter Unsinn. Eine Funktion die ein A-Objekt verändert hat gefälligst ein Member von A zu sein. Sonst müsstest du ja Klasse B ändern, wenn sich an den Interna von A etwas ändert. Gerade das will man doch vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229961</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Jul 2012 10:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:00:01 GMT]]></title><description><![CDATA[<p>Wenn ich es mir recht überlege, nein es gibt keinen Grund Pointer einzusezten. Das kam wohl daher das ich neue Objekte mit &quot;new&quot; erstelle und den dabei zurückerhaltenen Zeiger in der Liste speichern wollte.<br />
Die Variante 2. werden ich dann besser streichen.</p>
<p>Danke für die Antwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229970</guid><dc:creator><![CDATA[volli]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:03:10 GMT]]></title><description><![CDATA[<p>Gibt's hier einen tieferen Grund, überhaupt new einzusetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229972</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:18:20 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Gibt's hier einen tieferen Grund, überhaupt new einzusetzen?</p>
</blockquote>
<p>Nimms SeppJ nicht übel, er ist kein Freund von Zeigern <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/2229977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229977</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:18:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:30:03 GMT]]></title><description><![CDATA[<p>Die Zeigergeschichte kommt noch aus meiner &quot;C&quot; Vergangenheit. Da bin ich wohl geschädigt.</p>
<p>Vielleicht bin ich zu blöd (oder besser unwissend) aber wie anders als z.B. mit new würdest du dynamisch neue Instanzen einer Klasse erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229980</guid><dc:creator><![CDATA[volli]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:33:50 GMT]]></title><description><![CDATA[<p>volli schrieb:</p>
<blockquote>
<p>Vielleicht bin ich zu blöd (oder besser unwissend) aber wie anders als z.B. mit new würdest du dynamisch neue Instanzen einer Klasse erzeugen?</p>
</blockquote>
<p>Man könnte sie zum Beispiel in einen std::vector oder sonstigen Container einfügen <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>(Ja, der benutzt intern natürlich auch Zeiger, aber in der Regel besser als man das selber an einem Tag hinfrickeln kann und vor allem richtig und sicher)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229983</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:34:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Klasse kl;
vector.push_back(kl)

oder

vector.push_back(Klasse());
</code></pre>
<p>So?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229984</guid><dc:creator><![CDATA[Nymer_off]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:34:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:41:07 GMT]]></title><description><![CDATA[<p>Nymer_off schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Klasse kl;
vector.push_back(kl)

oder

vector.push_back(Klasse());
</code></pre>
<p>So?</p>
</blockquote>
<pre><code class="language-cpp">vector.push_back(Klasse());
</code></pre>
<p>Ist die richtige Variante</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229988</guid><dc:creator><![CDATA[kralo9]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to Verwaltung von Vektoren on Wed, 04 Jul 2012 11:41:21 GMT]]></title><description><![CDATA[<p>Ok, verstehe. Geht natürlich auch. Vorraussetzeung: im Vektor NICHT den Pointer auf das Objekt sichern <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 />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2229989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2229989</guid><dc:creator><![CDATA[volli]]></dc:creator><pubDate>Wed, 04 Jul 2012 11:41:21 GMT</pubDate></item></channel></rss>