<?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[Templates in templates]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse, die ich als Template implementieren will, da sie als Membervariable unterschiedliche Datentypen haben kann. Also sowas:</p>
<p>Element.h:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Element
{
    public:
    Element(T value);

    private:
    T m_value;
};
</code></pre>
<p>Nun hätte ich gerne in einer anderen Klasse einen vector mit solchen Elementen. Ich scheine aber noch etwas bei der Deklaration durcheinander zu bringen, oder geht das gar nicht?</p>
<p>Manager.h:</p>
<pre><code class="language-cpp">class Manager
{
    ...

    private:
    std::vector&lt;RMElement&lt;&gt; &gt; m_vector;
};
</code></pre>
<p>Jemand eine Idee?</p>
<p>Grüße<br />
Joschii</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274850/templates-in-templates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 06:22:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274850.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 Oct 2010 11:10:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 11:10:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse, die ich als Template implementieren will, da sie als Membervariable unterschiedliche Datentypen haben kann. Also sowas:</p>
<p>Element.h:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class Element
{
    public:
    Element(T value);

    private:
    T m_value;
};
</code></pre>
<p>Nun hätte ich gerne in einer anderen Klasse einen vector mit solchen Elementen. Ich scheine aber noch etwas bei der Deklaration durcheinander zu bringen, oder geht das gar nicht?</p>
<p>Manager.h:</p>
<pre><code class="language-cpp">class Manager
{
    ...

    private:
    std::vector&lt;RMElement&lt;&gt; &gt; m_vector;
};
</code></pre>
<p>Jemand eine Idee?</p>
<p>Grüße<br />
Joschii</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961096</guid><dc:creator><![CDATA[Joschii]]></dc:creator><pubDate>Mon, 04 Oct 2010 11:10:32 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 11:13:59 GMT]]></title><description><![CDATA[<p>Unter der Annahme, dass</p>
<pre><code>RMElement&lt;&gt;
</code></pre>
<p>gleich</p>
<pre><code>Element
</code></pre>
<p>ist, muss du Manager auch als Template implementieren</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class Manager
{
...
private:
std::vector&lt;Element&lt;T&gt; &gt; m_vector
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1961099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961099</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Mon, 04 Oct 2010 11:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 11:23:53 GMT]]></title><description><![CDATA[<p>Wenn du in dem vector tatsächlich Element mit jeweils unterschiedlichen Templateparametern speichern willst: Nein, das geht nicht, vector kann nur daten von genau einem Typ speichern. Alternativen wären Zeiger auf eine gemeinsame Basisklasse oder ein Container der für solche Aktionen ausgelegt ist, z.B. boost variant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961104</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 04 Oct 2010 11:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 15:26:16 GMT]]></title><description><![CDATA[<p>Edit: -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961219</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Mon, 04 Oct 2010 15:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 17:12:16 GMT]]></title><description><![CDATA[<p>Ich würde auch zu Type Erasure mittels gemeinsamer Basisklasse raten, wenn du kein Boost hast.</p>
<pre><code class="language-cpp">class BaseElement
{
   public:
       virtual ~BaseElement();
   // ...
};

template &lt;typename T&gt;
class Element : public BaseElement
{
    // ...
};
</code></pre>
<p>Und vielleicht noch irgendwie sicherstellen, dass der Speicher von <code>std::vector&lt;BaseElement*&gt;</code> schön freigegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961261</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 Oct 2010 17:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in templates on Mon, 04 Oct 2010 22:33:40 GMT]]></title><description><![CDATA[<p>erledigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961395</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Mon, 04 Oct 2010 22:33:40 GMT</pubDate></item></channel></rss>