<?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[Vektor templatisierter Objekte]]></title><description><![CDATA[<p>Hi,</p>
<p>ich bin Templates-Neuling und habe folgendes Problem:</p>
<p>Ich habe eine Klasse, die Parameter beinhalten soll, das ganze für double, int und noch ein paar andere. Also:</p>
<pre><code class="language-cpp">template T;
class Parameter
{
private:
  T value;
public:
  void Set(T val);
  T Get();
};
</code></pre>
<p>In einer anderen Klasse soll ein Vektor solche Parameter beinhalten. Allerdings nicht nur solche, die die gleiche Template-Belegung haben, sondern alle sollen aufgenommen werden können.</p>
<pre><code class="language-cpp">std::vector&lt;Parameter&gt; parameters;
</code></pre>
<p>Mit Vererbung würde ich einfach alle Parameter-Klassen von einer gemeinsamen Vaterklasse ableiten, aber wie mache ich das mit Templates?</p>
<p>Gruß, K.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212259/vektor-templatisierter-objekte</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 20:21:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212259.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 May 2008 20:18:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sat, 03 May 2008 20:18:51 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich bin Templates-Neuling und habe folgendes Problem:</p>
<p>Ich habe eine Klasse, die Parameter beinhalten soll, das ganze für double, int und noch ein paar andere. Also:</p>
<pre><code class="language-cpp">template T;
class Parameter
{
private:
  T value;
public:
  void Set(T val);
  T Get();
};
</code></pre>
<p>In einer anderen Klasse soll ein Vektor solche Parameter beinhalten. Allerdings nicht nur solche, die die gleiche Template-Belegung haben, sondern alle sollen aufgenommen werden können.</p>
<pre><code class="language-cpp">std::vector&lt;Parameter&gt; parameters;
</code></pre>
<p>Mit Vererbung würde ich einfach alle Parameter-Klassen von einer gemeinsamen Vaterklasse ableiten, aber wie mache ich das mit Templates?</p>
<p>Gruß, K.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502791</guid><dc:creator><![CDATA[Karl Blau]]></dc:creator><pubDate>Sat, 03 May 2008 20:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sat, 03 May 2008 20:27:44 GMT]]></title><description><![CDATA[<p>Das ganze geht afaik mit boost::any (oder vergleichbaren).</p>
<p>Allerdings wuerde ich erst noch einmal genau darueber nachdenken, ob du das ganze nicht anders loesen kannst - ich vermute eher ein Designproblem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502792</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Sat, 03 May 2008 20:27:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sat, 03 May 2008 20:48:33 GMT]]></title><description><![CDATA[<p>Und <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1919">@Karl</a>, du musst wissen, dass ein Parameter&lt;int&gt; ein anderer Typ ist als Parameter&lt;double&gt;. Ein vector kann aber (außer vielleicht durch Sachen wie boost::any) nur Objekte des selben/gleichen Typs aufnehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502803</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 03 May 2008 20:48:33 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sat, 03 May 2008 21:08:12 GMT]]></title><description><![CDATA[<p>Da mich dieses Problem auch interessiert, habe ich mich mal zu <code>boost.any</code> erkundigt, und folgende Lösung angefertigt:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Parameter
{
private:
	T element;

public:
	void set(T val) { element = val; }
	T get() { return element; }
};

int main()
{
	std::vector&lt;boost::any&gt; vec;
	Parameter&lt;int&gt; obj;
	obj.set(14);

	boost::any blub(obj);
	vec.push_back(blub);

	std::cout &lt;&lt; vec.at(0) /* ??? */ 
}
</code></pre>
<p>Die Aufnahme von <code>obj</code> in <code>boost::any</code> klappt wunderbar, nur wie kommt man dann wieder an den Inhalt von <code>any</code> , also an das vorher eingefügte Objekt <code>obj</code> ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502818</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 03 May 2008 21:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sat, 03 May 2008 22:22:37 GMT]]></title><description><![CDATA[<p><a href="http://www.kuro5hin.org/story/2002/5/1/142321/9513" rel="nofollow">Hier</a> ganz unten steht, wie mans machen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502845</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Sat, 03 May 2008 22:22:37 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Sun, 04 May 2008 01:28:50 GMT]]></title><description><![CDATA[<p>Wunderbar, vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502875</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sun, 04 May 2008 01:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Tue, 06 May 2008 14:41:43 GMT]]></title><description><![CDATA[<p>Ich habe folgende Situation. Aus einem vector&lt;any&gt;, der mit Instanzierungen meiner eigenen Template-Klasse unter Verwendung verschiedener Typen gefüllt wird. Irgendwann möchte ich dann eine Methode dieser Objekte aufrufen.</p>
<p>Mit fields[i].type() bekomme ich ja immerhin schonmal den quasi &quot;zusammengesetzten&quot; Typ aus meiner Klasse und dem darin benutzten Typ. So wie ich das sehe, müsste ich jetzt any_cast benutzen, um dann anschließend die erwünschte Methode aufzurufen. Aber im Moment sehe ich nur die Möglichkeit, mittels switch alle Fälle zu unterscheiden und dann jeweils &quot;manuell&quot; ein Casting zum richtigen Typ zu schreiben. Das wird aber doch schnell unpraktisch.</p>
<p>Kann man es nicht so einrichten, dass ich any_cast irgendwie den vorher bestimmten Typ in den spitzen Klammern mitgebe, und dann quasi mit einmal Casten alle Fälle und alle möglichen Typen abdecke?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504278</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Tue, 06 May 2008 14:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Tue, 06 May 2008 14:56:13 GMT]]></title><description><![CDATA[<p>Was ist denn an der Vererbungs-Version schlecht?</p>
<pre><code class="language-cpp">class AbstractParameter
{
public:
    virtual void blubb() = 0;
};

template &lt;class T&gt; class Parameter : public AbstractParameter
{
    // ...
};

std::vector&lt;boost::shared_ptr&lt;AbstractParameter&gt; &gt; p;
// ...
p[0]-&gt;blubb();
</code></pre>
<p>Schlecht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504287</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 06 May 2008 14:56:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Tue, 06 May 2008 16:38:56 GMT]]></title><description><![CDATA[<p>Prinzipiell nichts (obwohl ich die auch gar nicht erwähnt hatte). Aber ich benutze auch plain old data, und da müsste ich dann wieder Wrapper-Klassen schreiben. Das mag zwar eleganter sein, scheint mir aber dafür mit relativ viel Overhead erkauft zu sein. Obwohl es mir andererseits natürlich diese zusätzliche Library ersparen würde. Mal schauen, was am Ende günstiger ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504347</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Tue, 06 May 2008 16:38:56 GMT</pubDate></item><item><title><![CDATA[Reply to Vektor templatisierter Objekte on Tue, 06 May 2008 17:11:02 GMT]]></title><description><![CDATA[<p>den overhead baust du dir mit any außerdem sonst selbst ein (switch). irgendwo muss die entscheidung, welche funktion für den konkreten typen aufgerufen wird, ja getroffen werden. du hast die wahl: in deinem switch oder dank eingebauter polymorphie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1504364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1504364</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Tue, 06 May 2008 17:11:02 GMT</pubDate></item></channel></rss>