<?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[Dynamischer Klassenmember]]></title><description><![CDATA[<p>Ist sowas möglich? Entsprechend dem Konstruktoaufruf die Klasse dummy mit Objetken A oder B füllen:</p>
<pre><code class="language-cpp">class dummy{

 std::vector&lt; TYPE&gt; data;

public:

   dummy(bool boTyp){

    if( boTyp)
      //data mit dem Vectorelementen TYPE: A
    else
      //data mit den Vectorelementen TYPE :B

   }

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/193010/dynamischer-klassenmember</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 17:27:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193010.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2007 04:46:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 04:46:32 GMT]]></title><description><![CDATA[<p>Ist sowas möglich? Entsprechend dem Konstruktoaufruf die Klasse dummy mit Objetken A oder B füllen:</p>
<pre><code class="language-cpp">class dummy{

 std::vector&lt; TYPE&gt; data;

public:

   dummy(bool boTyp){

    if( boTyp)
      //data mit dem Vectorelementen TYPE: A
    else
      //data mit den Vectorelementen TYPE :B

   }

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1369805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369805</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 21 Sep 2007 04:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 05:19:10 GMT]]></title><description><![CDATA[<p>sollte gehen, wenn du aus class dummy auch ein template machst.<br />
<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/1369808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369808</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Fri, 21 Sep 2007 05:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 05:23:43 GMT]]></title><description><![CDATA[<p>und wenn ich erst über den konstruktor entscheiden will was für ein typ? geht das denn dann mittemplate?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369810</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 21 Sep 2007 05:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 05:55:37 GMT]]></title><description><![CDATA[<p>Nein, mit Templates geht sowas nicht - der Typ einer Variablen muß zur Compilezeit feststehen. Zur Laufzeit könntest du höchstens über Polymorphie etwas erreichen.</p>
<p>(aber was soll der Sinn der Aktion sein?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369824</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 05:55:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 06:26:06 GMT]]></title><description><![CDATA[<p>war nur mal so ne frage:) aber noch was anderes:</p>
<pre><code class="language-cpp">template &lt;class TYPE&gt;

class Elem{

  std::vector&lt;TYPE&gt; data;

};

class container{

 std::vector&lt; Elem&lt;???&gt; &gt; data;

};
</code></pre>
<p>kann ich es auch nicht ereichen Elemente mit unterschiedlichen TYPEN in den container zu speichern?</p>
<p>quasie Elem&lt;A&gt; und Elem&lt;B&gt; in die container liste</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369836</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 21 Sep 2007 06:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 06:32:56 GMT]]></title><description><![CDATA[<p>Nochmal: was hast du vor (inhaltlich)?</p>
<p>In einen std-Container kannst du grundsätzlich nur gleichartige Objekte reinpacken, für kompliziertere Konstruktionen benötigst du eigene Lösungen (Polymorphie, mehrere Container verwenden, ein vector&lt;pair&lt;Elem&lt;A&gt;,Elem&lt;B&gt;&gt;&gt;, ...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369842</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 06:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 06:56:46 GMT]]></title><description><![CDATA[<p>ne du hast es schon verstanden:) naja egal, war nur so ein gedankenspiel;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369854</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 21 Sep 2007 06:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 07:10:22 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>war nur mal so ne frage:) aber noch was anderes:</p>
<pre><code class="language-cpp">template &lt;class TYPE&gt;

class Elem{

  std::vector&lt;TYPE&gt; data;

};

class container{

 std::vector&lt; Elem&lt;???&gt; &gt; data;

};
</code></pre>
<p>kann ich es auch nicht ereichen Elemente mit unterschiedlichen TYPEN in den container zu speichern?...</p>
</blockquote>
<p>Nö - in einem vector sind immer Elem&lt;TYPE&gt; - das ist <em>ein</em> (zur Compilezeit feststehender) Typ.<br />
Spätestens wenn Du versuchst, &quot;???&quot; zu füllen, wirst Du feststellen, dass da etwas konkretes drinstehen muss...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369863</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 21 Sep 2007 07:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 08:25:29 GMT]]></title><description><![CDATA[<p>Mehrere Typen bekommst du nur dann in ein und die selbe Liste wenn sie entweder<br />
a) Durch ein Varianttyp abgebildet werden (mit allen damit verbundenen Nachteilen)<br />
b) Eine gemeinsame Basisklasse haben (und man sollte auch ein gleiches Interface verwenden für alle Aufrufe)<br />
c) Du void-Pointer verwendest und dir gleichzeitig den Typ jedes Eintrages merkst... was aber auch nichts anderes als ein Typunsicherer Varianttyp ist.</p>
<p>Ich gehe schlicht und einfach von schlechten Design aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369906</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:25:29 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 08:44:08 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>...<br />
a) Durch ein Varianttyp abgebildet werden (mit allen damit verbundenen Nachteilen)<br />
b) Eine gemeinsame Basisklasse haben (und man sollte auch ein gleiches Interface verwenden für alle Aufrufe)<br />
c) Du void-Pointer verwendest und dir gleichzeitig den Typ jedes Eintrages merkst...</p>
</blockquote>
<p>Ist das nicht letztlich eh' alles dasselbe ? (nur dass die Typprüfung zur Laufzeit in unterschiedlichen Verantwortungbereichen (boost-Entwickler/Compiler, Compiler, Anwender) liegt ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369923</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 21 Sep 2007 08:44:08 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 09:02:03 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Ist das nicht letztlich eh' alles dasselbe ? (nur dass die Typprüfung zur Laufzeit in unterschiedlichen Verantwortungbereichen (boost-Entwickler/Compiler, Compiler, Anwender) liegt ?</p>
</blockquote>
<p>Zumindestens würde ich b von a und c different ansehen. Ich sehe zumindest ein unterschied ob ich mittels switch oder über polymorphie arbeite <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="😉"
    /><br />
Und letzteres erfordert auch ein entsprechendes Design...</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369932</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 21 Sep 2007 09:02:03 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 09:12:38 GMT]]></title><description><![CDATA[<p>Fuer deine allererste frage faellt mir folgendes ein (glaube das nennt man virtueller Konstruktor, bin mir aber nicht sicher)</p>
<pre><code class="language-cpp">class DummyBase {
protected:
  DummyBase() {}

public:
  virtual ~DummyBase() {};

  //rest des Interfaces
}

template &lt;typename T&gt;
class Dummy : public DummyBase
{
  vector&lt;T&gt; data;

public:
  Dummy();            //konstruktoren..
  Dummy(const T&amp; t);  //was du halt so brauchst
}

//jetzt der Trick:
template &lt;typename T&gt;
DummyBase* MakeDummy(const T&amp; t) {
  return new Dummy&lt;T&gt;(t);  //oder so aehnlich, je nach Bedarf
}

//Anwendung:

class A;
class B;

int main()
{
  DummyBase* pDBA, pDBB;
  A a;
  pDBA = MakeDummy(a); //zeigt jetzt auf ein Dummy&lt;A&gt;
  pDBB = MakeDummy(B()); //zeigt auf ein Dummy&lt;B&gt;
}
</code></pre>
<p>So kann man das ganze per Polymorphie loesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1369939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1369939</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 Sep 2007 09:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamischer Klassenmember on Fri, 21 Sep 2007 12:15:13 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Ist das nicht letztlich eh' alles dasselbe ? (nur dass die Typprüfung zur Laufzeit in unterschiedlichen Verantwortungbereichen (boost-Entwickler/Compiler, Compiler, Anwender) liegt ?</p>
</blockquote>
<p>Zumindestens würde ich b von a und c different ansehen. Ich sehe zumindest ein unterschied ob ich mittels switch oder über polymorphie arbeite <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="😉"
    /><br />
Und letzteres erfordert auch ein entsprechendes Design...</p>
<p>cu André</p>
</blockquote>
<p>Naja, ich meinte halt &quot;gleich&quot; im Sinne von:<br />
- Der std::vector &quot;sieht&quot; trotzdem immer nur denselben Typ<br />
- Zur Laufzeit entscheidet ein Dispatchingmechanismus über einen Pointer, als welche Daten man das Zeug, auf das er zeigt, interpretieren soll.</p>
<p>Nicht missverstehen: Ich würde immer, immer, immer die &quot;eingebaute Polymorphie&quot; der Sprache vorziehen. <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="😉"
    /><br />
... eben weil der Mechanismus erprobt und von anderen Sprachfeatures (z.B. dynamic_cast) unterstützt wird =&gt; höhere Verlässlichkeit.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370102</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 21 Sep 2007 12:15:13 GMT</pubDate></item></channel></rss>