<?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[Verschiedene Template Instanzen in einen Container]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe das Problem, dass ich mehrere verschiedene Templateinstanzen einer Klasse habe.<br />
Dies würde ich gerne in einen Container packern.<br />
Geht das mit der STL oder muss ich mir ne eigenen Liste bauen.</p>
<p>L.g.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284878/verschiedene-template-instanzen-in-einen-container</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 05:13:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284878.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Apr 2011 12:33:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:33:02 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe das Problem, dass ich mehrere verschiedene Templateinstanzen einer Klasse habe.<br />
Dies würde ich gerne in einen Container packern.<br />
Geht das mit der STL oder muss ich mir ne eigenen Liste bauen.</p>
<p>L.g.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047084</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:33:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:39:40 GMT]]></title><description><![CDATA[<p>Du könntest den Container mit <a href="http://www.boost.org/doc/libs/1_46_0/doc/html/any.html" rel="nofollow">boost::any</a> parameterisieren.</p>
<p>*Edit<br />
Habs schon lange nicht mehr gebraucht und bin mir nicht mehr ganz sicher wies funktioniert, aber <a href="http://www.boost.org/doc/libs/1_46_1/doc/html/variant.html" rel="nofollow">boost::variant</a> müsste es auch gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047086</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:39:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:39:28 GMT]]></title><description><![CDATA[<p>Mehrere verschiedene Templateinstanzen einer Klasse in einer gemeinsamen Liste? Wer macht denn sowas? Vor allem, wie willst Du darauf zugreifen, denn die verschiedenen Instanzen haben ja unterschiedlichen Code. Mit switsch dispatchen? Nee. Es wird darauf hinauslaufen, daß die verschiedenen Templateinstanzen eine gemeinsamen Basisklasse brauchen, und Basisklassenzeiger kannste wieder mit std-Containern leicht verwalten, besser noch mit ptr-Containern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047088</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:46:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Wie bekommen den die verschiedenen Instanzen von :</p>
<pre><code class="language-cpp">template &lt;typename TX,typename RX&gt;
class Interface{
...
}
</code></pre>
<p>eine gemeinsame Basisklasse ???<br />
Mit void pointern geht mir die Typensicherheit verloren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047093</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:54:38 GMT]]></title><description><![CDATA[<p>Okay... <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="🙂"
    /> ptr container. Sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047098</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:58:10 GMT]]></title><description><![CDATA[<p>Ich weiß tzwar nicht, welche Funktionen in Interface sind, aber nach folgendem Schema</p>
<pre><code class="language-cpp">class BaseInterface{
virtual void doSomething() = 0;
virtual ~BaseInterface(); // EDIT: virtuellen Destruktor nicht vergessen
};

template &lt;typename TX,typename RX&gt;
class Interface : public BaseInterface{
...
virtual void doSomething(){};
};
</code></pre>
<p>Eventuell auch mit einem Template-Parameter.<br />
Kann man nach den bisherigen Infos nicht beurrteilen:</p>
<pre><code class="language-cpp">template &lt;typename TX&gt;
class BaseInterface{
virtual void doSomething(const TX&amp;) = 0;
virtual ~BaseInterface(); // EDIT: virtuellen Destruktor nicht vergessen
};

template &lt;typename TX,typename RX&gt;
class Interface : public BaseInterface&lt;TX&gt;{
...
virtual void doSomething(const TX&amp; t){};
};
</code></pre>
<p>Außerdem ist: Ist &quot;Interface&quot; wirklich passend für deine Klasse?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047100</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 12:59:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class InterfaceBase{
   public:
      virtual ~Interface()=0;
      virtual void shoot()=0;
};
template &lt;typename TX,typename RX&gt;
class Interface:public InterfaceBase{
    TX foo;
    RX bar;
    void shoot(){
       foo.grapelize(&amp;bar.moo);
    }
};
vector&lt;InterfaceBase*&gt; vec;
for each i as Interface*
   i-&gt;shoot();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2047103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047103</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 12:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 13:26:05 GMT]]></title><description><![CDATA[<p><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 />
Ja klasse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047113</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Sun, 10 Apr 2011 13:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 13:29:50 GMT]]></title><description><![CDATA[<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p><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 />
Ja klasse</p>
</blockquote>
<p>Freut mich, das dieses Muster anscheinend bei Dir paßt.<br />
Und jetzt nur noch 999999 Programmierer, die ihre Verwendung von boost::any überdenken sollten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047115</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 13:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 13:36:05 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Eventuell auch mit einem Template-Parameter.<br />
Kann man nach den bisherigen Infos nicht beurrteilen:</p>
<pre><code class="language-cpp">template &lt;typename TX&gt;
class BaseInterface{
virtual void doSomething(const TX&amp;) = 0;
</code></pre>
</blockquote>
<p>Abgesehen davon, daß ich Template-Basisklassen mit virtuellen Funktionen noch nicht gebraucht habe, meine ich mich auch daran zu erinnern, daß das verböten ist. Oder ist das Geschichte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047118</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 13:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 13:49:52 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p><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 />
Ja klasse</p>
</blockquote>
<p>Freut mich, das dieses Muster anscheinend bei Dir paßt.<br />
Und jetzt nur noch 999999 Programmierer, die ihre Verwendung von boost::any überdenken sollten.</p>
</blockquote>
<p>Das Muster ist schon gut, aber manchmal exisitert keine sinnvolle gemeinsame Basisklasse. Dann sollte man auch nicht einfach irgendeine Basisklasse schreiben, nur damit die Objekte zusammen in einer Container passen.<br />
Gut, wenn es keine gemeinsame Basis gibt, muss man sich dann sowieso fragen, was die Objekte überhaupt in einem gemeinsamen Container zu suchen haben.</p>
<p>Wann sollte man dann boost::any verwenden? Hast du gerade ein Beispiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047122</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sun, 10 Apr 2011 13:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 13:52:04 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Eventuell auch mit einem Template-Parameter.<br />
Kann man nach den bisherigen Infos nicht beurrteilen:</p>
<pre><code class="language-cpp">template &lt;typename TX&gt;
class BaseInterface{
virtual void doSomething(const TX&amp;) = 0;
</code></pre>
</blockquote>
<p>Abgesehen davon, daß ich Template-Basisklassen mit virtuellen Funktionen noch nicht gebraucht habe, meine ich mich auch daran zu erinnern, daß das verböten ist. Oder ist das Geschichte?</p>
</blockquote>
<p>Das ist nicht verböten. Wenn die virtuelle Funktion selbst wieder ein Funktionstemplate wöre, dann wöre es verböten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047123</guid><dc:creator><![CDATA[Mitleid]]></dc:creator><pubDate>Sun, 10 Apr 2011 13:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 14:09:25 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Eventuell auch mit einem Template-Parameter.<br />
Kann man nach den bisherigen Infos nicht beurrteilen:</p>
<pre><code class="language-cpp">template &lt;typename TX&gt;
class BaseInterface{
virtual void doSomething(const TX&amp;) = 0;
</code></pre>
</blockquote>
<p>Abgesehen davon, daß ich Template-Basisklassen mit virtuellen Funktionen noch nicht gebraucht habe, meine ich mich auch daran zu erinnern, daß das verböten ist. Oder ist das Geschichte?</p>
</blockquote>
<p>Gut, dass du es ansprichst...<br />
Ich hab es bisher immer verwendet ohne damit Probleme befürchtet zu haben.<br />
Ich hab noch keine schlechten Erfahrungen gemacht, aber ehrlich gesagt weiß ich nicht, ob es erlaubt ist.</p>
<p>Der GCC meldet mit <code>-Wall</code> jedenfalls keine Warnung:</p>
<pre><code class="language-cpp">#include &lt;string&gt;

template &lt;typename TX&gt;
class BaseInterface{
public:
virtual void doSomething(const TX&amp;) = 0;
virtual ~BaseInterface(){} // EDIT: virtuellen Destruktor nicht vergessen 
};

template &lt;typename TX,typename RX&gt;
class Interface : public BaseInterface&lt;TX&gt;{
public:
virtual void doSomething(const TX&amp; t){};
};

int main(){
        BaseInterface&lt;std::string&gt;* i = new Interface&lt;std::string, int&gt;();
        i-&gt;doSomething(&quot;&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2047130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047130</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 10 Apr 2011 14:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 14:10:54 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Eventuell auch mit einem Template-Parameter.<br />
Kann man nach den bisherigen Infos nicht beurrteilen:</p>
<pre><code class="language-cpp">template &lt;typename TX&gt;
class BaseInterface{
virtual void doSomething(const TX&amp;) = 0;
</code></pre>
</blockquote>
<p>Abgesehen davon, daß ich Template-Basisklassen mit virtuellen Funktionen noch nicht gebraucht habe, meine ich mich auch daran zu erinnern, daß das verböten ist. Oder ist das Geschichte?</p>
</blockquote>
<p>Das ist nicht verböten. Wenn die virtuelle Funktion selbst wieder ein Funktionstemplate wöre, dann wöre es verböten.</p>
</blockquote>
<p>Dann bin ich beruhigt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047131</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 10 Apr 2011 14:10:54 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 14:53:27 GMT]]></title><description><![CDATA[<p>Mitleid schrieb:</p>
<blockquote>
<p>Das ist nicht verböten. Wenn die virtuelle Funktion selbst wieder ein Funktionstemplate wöre, dann wöre es verböten.</p>
</blockquote>
<p>Jupp, das hab ich verwechselt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047146</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 14:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 20:35:18 GMT]]></title><description><![CDATA[<p>icarus2 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p><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 />
Ja klasse</p>
</blockquote>
<p>Freut mich, das dieses Muster anscheinend bei Dir paßt.<br />
Und jetzt nur noch 999999 Programmierer, die ihre Verwendung von boost::any überdenken sollten.</p>
</blockquote>
<p>Das Muster ist schon gut, aber manchmal exisitert keine sinnvolle gemeinsame Basisklasse. Dann sollte man auch nicht einfach irgendeine Basisklasse schreiben, nur damit die Objekte zusammen in einer Container passen.<br />
Gut, wenn es keine gemeinsame Basis gibt, muss man sich dann sowieso fragen, was die Objekte überhaupt in einem gemeinsamen Container zu suchen haben.</p>
<p>Wann sollte man dann boost::any verwenden? Hast du gerade ein Beispiel?</p>
</blockquote>
<p>Ich habe es noch nie gebraucht.<br />
Muß aber fast täglich lesen, wie gut es sei: <a href="http://www.c-plusplus.net/forum/284902" rel="nofollow">http://www.c-plusplus.net/forum/284902</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047286</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 10 Apr 2011 20:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Sun, 10 Apr 2011 20:44:03 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>icarus2 schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>AlexanderKiebler schrieb:</p>
<blockquote>
<p><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 />
Ja klasse</p>
</blockquote>
<p>Freut mich, das dieses Muster anscheinend bei Dir paßt.<br />
Und jetzt nur noch 999999 Programmierer, die ihre Verwendung von boost::any überdenken sollten.</p>
</blockquote>
<p>Das Muster ist schon gut, aber manchmal exisitert keine sinnvolle gemeinsame Basisklasse. Dann sollte man auch nicht einfach irgendeine Basisklasse schreiben, nur damit die Objekte zusammen in einer Container passen.<br />
Gut, wenn es keine gemeinsame Basis gibt, muss man sich dann sowieso fragen, was die Objekte überhaupt in einem gemeinsamen Container zu suchen haben.</p>
<p>Wann sollte man dann boost::any verwenden? Hast du gerade ein Beispiel?</p>
</blockquote>
<p>Ich habe es noch nie gebraucht.<br />
Muß aber fast täglich lesen, wie gut es sei: <a href="http://www.c-plusplus.net/forum/284902" rel="nofollow">http://www.c-plusplus.net/forum/284902</a></p>
</blockquote>
<p>Immer noch besser als void*, auch wenn ich selbst keinen Anwendungsfall kenne <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2047290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047290</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 10 Apr 2011 20:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Wed, 27 Apr 2011 05:57:35 GMT]]></title><description><![CDATA[<p>Gibts ne Möglichkeit dadraus wieder zu lesen ???..<br />
Also das Problem ist wenn ich im Interface eine lese Methode schreibe,<br />
weiß ich nicht welchen typ ich zurückgeben soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054863</guid><dc:creator><![CDATA[AlexanderKiebler]]></dc:creator><pubDate>Wed, 27 Apr 2011 05:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Verschiedene Template Instanzen in einen Container on Wed, 27 Apr 2011 09:56:04 GMT]]></title><description><![CDATA[<p>Das ist das Problem bei der Methode. Bei Zeigern auf die Basisklasse kann man wenigstens noch über virtuelle Funktionen was hinbekommen, bei boost::any gibt es keine Möglichkeit, das muss der Programmierer wissen.<br />
Evtl liese sich da auch noch was mit einem static dispatcher machen. Aber performancetechnisch ist das ziemlich fragwürdig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2054953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2054953</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 27 Apr 2011 09:56:04 GMT</pubDate></item></channel></rss>