<?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[Probleme mit templates und Container]]></title><description><![CDATA[<p>Hi,</p>
<p>ist sowas nicht möglich?</p>
<pre><code class="language-cpp">template &lt;typename container&gt;
void output ( container&lt;std::string&gt; &amp;i ){
	std::ostream_iterator&lt;var&gt; write ( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>1&gt;.\Main.cpp(402) : error C2143: Syntaxfehler: Es fehlt ')' vor '&lt;'
1&gt;.\Main.cpp(402) : error C2143: Syntaxfehler: Es fehlt ';' vor '&lt;'
1&gt;.\Main.cpp(402) : error C2988: Unerkannte Vorlagendeklaration/-definition
</code></pre>
<p>Kann ich also kein Template für einen Container (vector, deque...) erstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239983/probleme-mit-templates-und-container</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:30:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239983.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Apr 2009 09:42:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 09:42:38 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ist sowas nicht möglich?</p>
<pre><code class="language-cpp">template &lt;typename container&gt;
void output ( container&lt;std::string&gt; &amp;i ){
	std::ostream_iterator&lt;var&gt; write ( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>1&gt;.\Main.cpp(402) : error C2143: Syntaxfehler: Es fehlt ')' vor '&lt;'
1&gt;.\Main.cpp(402) : error C2143: Syntaxfehler: Es fehlt ';' vor '&lt;'
1&gt;.\Main.cpp(402) : error C2988: Unerkannte Vorlagendeklaration/-definition
</code></pre>
<p>Kann ich also kein Template für einen Container (vector, deque...) erstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703530</guid><dc:creator><![CDATA[EEK@work]]></dc:creator><pubDate>Thu, 30 Apr 2009 09:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 09:46:42 GMT]]></title><description><![CDATA[<p>Dafür gibt es template-template-Parameter</p>
<pre><code class="language-cpp">template&lt;template&lt;typename T&gt; class Container&gt;
void foo(Container&lt;int&gt; const &amp;c);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1703533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703533</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Thu, 30 Apr 2009 09:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 09:46:51 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703534</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703534</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 30 Apr 2009 09:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 10:10:38 GMT]]></title><description><![CDATA[<p>Wenn ich jetzt nur die Funktion im Quellcode stehen habe</p>
<pre><code class="language-cpp">template&lt;template&lt;typename T&gt; class container&gt;
void output ( container&lt;std::string&gt; &amp;i ){
	std::ostream_iterator&lt;std::string&gt; write ( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>dann bekomme ich keine Fehler.<br />
Aber sobald ich schreibe</p>
<pre><code class="language-cpp">std::vector&lt;std::string&gt; str1;
str1.push_back ( &quot;bla&quot; );
str1.push_back ( &quot;blabla&quot; );
output ( str1 );
</code></pre>
<p>bekomme ich den Fehler</p>
<pre><code>1&gt;.\Main.cpp(419) : error C2784: &quot;void output(container&lt;std::string&gt; &amp;)&quot;: template-Argument für &quot;container&lt;std::string&gt; &amp;&quot; konnte nicht von &quot;std::vector&lt;_Ty&gt;&quot; hergeleitet werden.
1&gt;        with
1&gt;        [
1&gt;            _Ty=std::string
1&gt;        ]
1&gt;        .\Main.cpp(402): Siehe Deklaration von 'output'
</code></pre>
<p>Hab ich da was falsch verstanden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703547</guid><dc:creator><![CDATA[EEK@work]]></dc:creator><pubDate>Thu, 30 Apr 2009 10:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 12:05:51 GMT]]></title><description><![CDATA[<p>Die meisten STL-Container (wenn nicht sogar alle) bieten das typedef &quot;value_type&quot; an:</p>
<pre><code class="language-cpp">template&lt;class Container&gt;
void output ( const Container&amp; i )
{
    std::ostream_iterator&lt;Container::value_type&gt; write( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>edit: Ich würde aber statt dieser Funktion eher den operator&lt;&lt; überladen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const std::vector&lt;T&gt;&amp; c )
{
	std::ostream_iterator&lt;T&gt; write( out, &quot; &quot; );
	out &lt;&lt; &quot;[ &quot;;
	std::copy( c.begin(), c.end(), write );
	return out &lt;&lt; &quot;]&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1703596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703596</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Thu, 30 Apr 2009 12:05:51 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 12:14:35 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class Container&gt;
void output ( const Container&amp; i )
{
    std::ostream_iterator&lt;Container::value_type&gt; write( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
</blockquote>
<p>Danke, das funktioniert perfekt.</p>
<p>Badestrand schrieb:</p>
<blockquote>
<p>edit: Ich würde aber statt dieser Funktion eher den operator&lt;&lt; überladen:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
std::ostream&amp; operator&lt;&lt;( std::ostream&amp; out, const std::vector&lt;T&gt;&amp; c )
{
	std::ostream_iterator&lt;T&gt; write( out, &quot; &quot; );
	out &lt;&lt; &quot;[ &quot;;
	std::copy( c.begin(), c.end(), write );
	return out &lt;&lt; &quot;]&quot;;
}
</code></pre>
</blockquote>
<p>Das mit dem überladen von Operatoren, muss ich mir erst mal genau ansehen. Davon habe ich bis jetzt noch keine Ahnung.</p>
<p>Jedenfalls danke für die Anworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703603</guid><dc:creator><![CDATA[EEK@work]]></dc:creator><pubDate>Thu, 30 Apr 2009 12:14:35 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 15:09:36 GMT]]></title><description><![CDATA[<p>EEK@work schrieb:</p>
<blockquote>
<p>Wenn ich jetzt nur die Funktion im Quellcode stehen habe</p>
<pre><code class="language-cpp">template&lt;template&lt;typename T&gt; class container&gt;
void output ( container&lt;std::string&gt; &amp;i ){
	std::ostream_iterator&lt;std::string&gt; write ( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>...</p>
<pre><code class="language-cpp">// ... std::vector übergabe ...
</code></pre>
<p>Hab ich da was falsch verstanden?</p>
</blockquote>
<p>Um noch auf diese Frage eine Antwort zu geben. Ja du hast einen Fehler gemacht. Die Standardbibliothek Container haben meistens zwei Templateparameter. Soweit mir bekannt ist, dürften sie sogar mehr als zwei haben, aber meistens haben sie nur zwei. Daher müsste der Code so lauten:</p>
<pre><code class="language-cpp">// template&lt;typename, typename&gt; &lt;- zwei typenames
template&lt;template&lt;typename, typename&gt; class container&gt;
void output ( container&lt;std::string, std::allocator&lt;std::string&gt; &gt; &amp;i )
{
	std::ostream_iterator&lt;std::string&gt; write ( std::cout, &quot; &quot; );
	std::copy ( i.begin(), i.end(), write );
}
</code></pre>
<p>Dies allerdings nur zur Vollständigkeit. Ich rate eher zur Lösung von Badestrand. Template-Template-Parameter sind immer ein wenig mühsam und unflexibel.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703674</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 30 Apr 2009 15:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 15:14:45 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Dies allerdings nur zur Vollständigkeit. Ich rate eher zur Lösung von Badestrand. Template-Template-Parameter sind immer ein wenig mühsam und unflexibel.</p>
</blockquote>
<p>Sie sind häufig flexibel genug - wenns sich nicht gerade um STL-Container handelt <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>EEK@work schrieb:</p>
<blockquote>
<p>Das mit dem überladen von Operatoren, muss ich mir erst mal genau ansehen. Davon habe ich bis jetzt noch keine Ahnung.</p>
</blockquote>
<p>Da gibts n Artikel im Magazin zu <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="😉"
    /> Wenn du Funktionsüberladungen kennst sollte dir das damit keine großen Probleme bereiten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703678</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 30 Apr 2009 15:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 15:42:32 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Sie sind häufig flexibel genug - wenns sich nicht gerade um STL-Container handelt <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>
</blockquote>
<p>Template-Template-Parameter habe ich bisher immer nur als Einschränkung angesehen. Gut, man muss vielleicht etwas weniger schreiben, aber ansonsten ist es eine Einschränkung des zu übergebenen Typs. Sowas würde ich nicht unbedingt als flexibel bezeichnen <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>pumuckl schrieb:</p>
<blockquote>
<p>EEK@work schrieb:</p>
<blockquote>
<p>Das mit dem überladen von Operatoren, muss ich mir erst mal genau ansehen. Davon habe ich bis jetzt noch keine Ahnung.</p>
</blockquote>
<p>Da gibts n Artikel im Magazin zu <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="😉"
    /> Wenn du Funktionsüberladungen kennst sollte dir das damit keine großen Probleme bereiten...</p>
</blockquote>
<p>LoL, das scheint der wichtigste Artikel überhaupt zu werden, oder du machst einfach zu viel Eigenwerbung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703695</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 30 Apr 2009 15:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit templates und Container on Thu, 30 Apr 2009 16:35:21 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Sie sind häufig flexibel genug - wenns sich nicht gerade um STL-Container handelt <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>
</blockquote>
<p>Template-Template-Parameter habe ich bisher immer nur als Einschränkung angesehen. Gut, man muss vielleicht etwas weniger schreiben, aber ansonsten ist es eine Einschränkung des zu übergebenen Typs. Sowas würde ich nicht unbedingt als flexibel bezeichnen <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>
</blockquote>
<p>Nicht so flexibel wie allgemeine templateparameter, das mag sein. Aber in vielen Fällen eben doch flexibel genug.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>LoL, das scheint der wichtigste Artikel überhaupt zu werden, oder du machst einfach zu viel Eigenwerbung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Andersrum - ich hab den Artikel geschrieben weils ein ständig wiederkehrendes Thema ist - und ja, ich mache Eigenwerbung <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/1703729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703729</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 30 Apr 2009 16:35:21 GMT</pubDate></item></channel></rss>