<?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[Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer]]></title><description><![CDATA[<p>Wie löse ich am besten folgende Problemstellung:</p>
<p>Meine Klasse</p>
<pre><code>class MyClass
{
vector&lt;CObj*&gt; vObj;
TStringList *slBezeichner;
[...]
// Methode
int GetIndex(String bezeichner);
}

class CObj
{
// Daten u.A.
CBitcontainer bc;
}
</code></pre>
<p>enthält einen Vector mit Objekten, die wiederum einen Bitcontainer enthalten. Die einzelnen Bits können mit Namen angesprochen werden, die in der Stringliste 'slBezeichner' stehen. Die Objektklasse 'CObj' soll aus der Stringliste den Index zu einem Namen ermitteln (also die Bitposition), also am besten auf GetIndex zugreifen können. Wie realisiere ich das am besten? Bisher übergebe ich einen Pointer auf die Stringliste an die Objektklasse, der dort als Member abgelegt wird. Die Stringliste wird von MyClass erzeugt und deleted.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298612/designfrage-containerklasse-mit-vector-objekte-mit-bitcontainer</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 18:54:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298612.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jan 2012 10:02:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 10:02:07 GMT]]></title><description><![CDATA[<p>Wie löse ich am besten folgende Problemstellung:</p>
<p>Meine Klasse</p>
<pre><code>class MyClass
{
vector&lt;CObj*&gt; vObj;
TStringList *slBezeichner;
[...]
// Methode
int GetIndex(String bezeichner);
}

class CObj
{
// Daten u.A.
CBitcontainer bc;
}
</code></pre>
<p>enthält einen Vector mit Objekten, die wiederum einen Bitcontainer enthalten. Die einzelnen Bits können mit Namen angesprochen werden, die in der Stringliste 'slBezeichner' stehen. Die Objektklasse 'CObj' soll aus der Stringliste den Index zu einem Namen ermitteln (also die Bitposition), also am besten auf GetIndex zugreifen können. Wie realisiere ich das am besten? Bisher übergebe ich einen Pointer auf die Stringliste an die Objektklasse, der dort als Member abgelegt wird. Die Stringliste wird von MyClass erzeugt und deleted.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171788</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 10:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 10:19:55 GMT]]></title><description><![CDATA[<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>enthält einen Vector mit Objekten, die wiederum einen Bitcontainer enthalten.</p>
</blockquote>
<p>Nein, sie enthält einen Vector von Pointern und es ist aus deinem Beispiel nicht ersichtlich, wieso dies so sein sollte. Es wäre jedenfalls sehr ungewöhnlich.</p>
<blockquote>
<p>Die einzelnen Bits können mit Namen angesprochen werden, die in der Stringliste 'slBezeichner' stehen.</p>
</blockquote>
<p>Auch hier hast du wieder nur einen Pointer. Siehe oben.</p>
<blockquote>
<p>Die Objektklasse 'CObj' soll aus der Stringliste den Index zu einem Namen ermitteln (also die Bitposition), also am besten auf GetIndex zugreifen können. Wie realisiere ich das am besten?</p>
</blockquote>
<p>Wenn ich mal annehmen darf, dass das Design bisher so stimmt und die Member in MyClass nur die Gemeinsamkeit haben, zu einer Instanz von MyClass zu gehören...</p>
<blockquote>
<p>Bisher übergebe ich einen Pointer auf die Stringliste an die Objektklasse,</p>
</blockquote>
<p>...dann klingt das gar nicht so schlecht. Aber lass das Gepointere weg. Es gibt Referenzen. Und übergib die Stringliste dann, wenn du sie brauchst.</p>
<blockquote>
<p>der dort als Member abgelegt wird.</p>
</blockquote>
<p>Das klingt wiederum ungewöhnlich, kann aber richtig sein. Kommt aber genau drauf an, was genau du modellieren möçhtest. An abstrakten Beispielen wie &quot;MyClass&quot; kann man das nicht beantworten.</p>
<blockquote>
<p>Die Stringliste wird von MyClass erzeugt und deleted.</p>
</blockquote>
<p>Und deshalb lass das Gepointere sein. Wozu soll das gut sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171794</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 Jan 2012 10:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 10:27:15 GMT]]></title><description><![CDATA[<p>Java-Vergangenheit? <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>Falls ja: vergiss das ganze new, was du von Java für jedes Objekt kennst. In C++ ist das viel seltener nötig und angebracht. Du darfst auf keinen Fall das, was du von Java kennst, auf C++ übertragen. Das sind unterschiedliche Konzepte, die man nicht vermengen darf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171796</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 24 Jan 2012 10:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 10:56:46 GMT]]></title><description><![CDATA[<p>Danke für die Mühe!</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>enthält einen Vector mit Objekten, die wiederum einen Bitcontainer enthalten.</p>
</blockquote>
<p>Nein, sie enthält einen Vector von Pointern und es ist aus deinem Beispiel nicht ersichtlich, wieso dies so sein sollte. Es wäre jedenfalls sehr ungewöhnlich.</p>
</blockquote>
<p>Richtig, es ist ein Vector mit Pointern. Die Objekte enthalten eine große Datenstruktur, und ich erzeuge sie in einer Create-Funktion und lege die Zeiger mit push_back im Vector ab. Ist das so ungewöhnlich?</p>
<p>Ich greife von anderer Stelle auf die Objekte des vectors zu, in etwa</p>
<pre><code>bool b = CObj-&gt;GetAt(&quot;Name&quot;);
</code></pre>
<p>Das Objekt holt sich intern den Index des Bits in einer Funktion</p>
<pre><code>int idx = CObj-&gt;GetBitNr(&quot;name&quot;);
</code></pre>
<p>durch Zugriff auf den StringList-Pointer und holt sich dann das Bit aus dem Container.</p>
<p>Ist es wirklich so ungewöhnlich, diese Objekte und Stringlisten dynamisch zu erzeugen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171805</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 10:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 11:03:44 GMT]]></title><description><![CDATA[<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>Ist es wirklich so ungewöhnlich, diese Objekte und Stringlisten dynamisch zu erzeugen?</p>
</blockquote>
<p>Stringliste: auf jeden Fall (edit: ungewöhnlich ist gemeint)<br />
Objekte: kann man sich streiten. ist das kopieren verboten? Wie sieht das Objekt aus?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171807</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 24 Jan 2012 11:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 14:12:56 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>Ist es wirklich so ungewöhnlich, diese Objekte und Stringlisten dynamisch zu erzeugen?</p>
</blockquote>
<p>Stringliste: auf jeden Fall (edit: ungewöhnlich ist gemeint)<br />
Objekte: kann man sich streiten. ist das kopieren verboten? Wie sieht das Objekt aus?</p>
<p>bb</p>
</blockquote>
<p>Die Objekte enthalten ca. 40 AnsiStrings, die über den Namen angesprochen werden müssen, ca. 20 Integer und Long Variablen und ca 100 Bools, die in meinem Bitcontainer gekapselt sind. Dazu noch einen Pointer auf ein Grafikobjekt.</p>
<p>Die von mir benutzte VCL-Stringlist (TStringList) kann im übrigen nur dynamisch erzeugt werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171809</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 14:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 12:37:20 GMT]]></title><description><![CDATA[<p>Wenn das eine VCL TStringList ist kannst du sie nur dynamisch anlegen. Alles, was von <code>TObject</code> erbt kann nicht als Stackobjekt erzeugt werden.<br />
Aber vielleicht ist das ganze Design etwas zu kompliziert, was genau möchtest du denn erreichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171842</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:37:20 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 12:52:43 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Wenn das eine VCL TStringList ist kannst du sie nur dynamisch anlegen. Alles, was von <code>TObject</code> erbt kann nicht als Stackobjekt erzeugt werden.<br />
Aber vielleicht ist das ganze Design etwas zu kompliziert, was genau möchtest du denn erreichen?</p>
</blockquote>
<p>Von den beschriebenen Datenobjekten muß das Programm ca. 100 (Größenordnung) verwalten, muß sehr oft darauf zugreifen und Datenmember verändern. Bis vor kurzem standen die ca. 100 Boolschen Variablen mit Name in der Klasse, und wurden so angesprochen. Nun soll der Zugriff über den Bitcontainer erfolgen, die Namen der Bits werden in einer Datei gepflegt, die bei Programmstart in eine Stringlist eingelesen wird. Über diese wird der Index ermittelt .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171857</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 12:52:43 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 13:15:26 GMT]]></title><description><![CDATA[<p>Also sowas wie <code>std::map&lt;AnsiString,bool&gt;</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171869</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 24 Jan 2012 13:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 13:45:47 GMT]]></title><description><![CDATA[<p>Ja, in der Tat, mit einer map könnte ich dies implementieren. Die Bools kommen<br />
allerdings bereits in Bitform über die Schnittstelle, und müssen so auch wieder zurück (also als Byte-Buffer, der von meinem Bitcontainer direkt bearbeitet werden kann). Müsste man also noch in die map bringen und zurück, wäre aber vielleicht eine gute Alternative!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171882</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 13:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 13:56:29 GMT]]></title><description><![CDATA[<p>Ok, die Reihenfolge der Bits ist also fest vorgegeben und hängt nicht vom Bezeichner ab? Damit fiele <code>std::map&lt;AnsiString,bool&gt;</code> natürlich wieder aus, weil <code>std::map</code> nach Schlüsseln sortiert. Eine eigene Klasse (Name + Index) als Key macht das Suchen schon wieder komplizierter.<br />
Nur noch mal zum Verständnis:</p>
<p>Deine StringList enthält Bezeichner. Die Position des Bezeichners in der StringListe bestimmt den Index des gesuchten Bits im Bitcontainer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171886</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 24 Jan 2012 13:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 14:00:45 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Ok, die Reihenfolge der Bits ist also fest vorgegeben und hängt nicht vom Bezeichner ab? Damit fiele <code>std::map&lt;AnsiString,bool&gt;</code> natürlich wieder aus, weil <code>std::map</code> nach Schlüsseln sortiert. Eine eigene Klasse (Name + Index) als Key macht das Suchen schon wieder komplizierter.<br />
Nur noch mal zum Verständnis:</p>
<p>Deine StringList enthält Bezeichner. Die Position des Bezeichners in der StringListe bestimmt den Index des gesuchten Bits im Bitcontainer?</p>
</blockquote>
<p>Genau so!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171887</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 14:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 14:12:26 GMT]]></title><description><![CDATA[<p>Kannst du deinen Bitcontainer entsprechend umbauen, sodass du zu jedem Index einen Namen und den Status des Bits speichern kannst? Würde das Ganze erheblich vereinfachen, denke ich. Lediglich zum Lesen/Schreiben der Bits musst du sie halt irgendwie in einen Puffer bringen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171890</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Tue, 24 Jan 2012 14:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 14:21:23 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Kannst du deinen Bitcontainer entsprechend umbauen, sodass du zu jedem Index einen Namen und den Status des Bits speichern kannst? Würde das Ganze erheblich vereinfachen, denke ich. Lediglich zum Lesen/Schreiben der Bits musst du sie halt irgendwie in einen Puffer bringen.</p>
</blockquote>
<p>Das wäre sicher möglich. Ist halt auch die Frage, wie ich performancetechnisch damit fahre. Die Namen für die Bits würden dann ja wieder in jedem einzelnen Objekt mitgeführt werden. Muß ich mal testen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171892</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 14:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 15:52:28 GMT]]></title><description><![CDATA[<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>Ist halt auch die Frage, wie ich performancetechnisch damit fahre.</p>
</blockquote>
<p>Nein. Das ist erst dann die Frage, wenn du damit performancetechnisch schlecht fährst. Such erstmal ne Lösung, die übersichtlich und wartbar ist und funtkioniert, bevor du nach einer Lösung suchst, die vielleicht unter Umständen wenn du Glück hast schneller funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171919</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 24 Jan 2012 15:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 16:50:04 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>chocolate_jesus schrieb:</p>
<blockquote>
<p>Ist halt auch die Frage, wie ich performancetechnisch damit fahre.</p>
</blockquote>
<p>Nein. Das ist erst dann die Frage, wenn du damit performancetechnisch schlecht fährst. Such erstmal ne Lösung, die übersichtlich und wartbar ist und funtkioniert, bevor du nach einer Lösung suchst, die vielleicht unter Umständen wenn du Glück hast schneller funktioniert.</p>
</blockquote>
<p>Es funktioniert, ist einigermaßen übersichtlich und durchaus wartbar. Dachte, es müsse eine deutlich einfache, besserere Lösung geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171946</guid><dc:creator><![CDATA[chocolate_jesus]]></dc:creator><pubDate>Tue, 24 Jan 2012 16:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage - Containerklasse mit vector, Objekte mit Bitcontainer on Tue, 24 Jan 2012 17:56:25 GMT]]></title><description><![CDATA[<p>Welches? Deine erste Lösung oder map&lt;AnsiString, bool&gt;? Wartbar, übersichtlich und einfach würde ich nämlich das erste nicht nennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2171979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2171979</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 24 Jan 2012 17:56:25 GMT</pubDate></item></channel></rss>