<?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[Bei Templates auf verschiedene Typen reagieren]]></title><description><![CDATA[<p>Hey Leute <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>
<p>Meine Übungsaufgabe war gerade, eine Klasse zu bauen, die eine Queue implementiert, die dynamisch auf den Typ reagiert, also Templates.</p>
<p>Nun war das Beispiel mit komplexen Zahlen, eine Klasse Complex inkl. Print() wurde schon geliefert. Diese habe ich dann einfach benutzt:</p>
<pre><code>template &lt;class T&gt; void Schlange&lt;T&gt;::print(){
	if(empty()) cout &lt;&lt; &quot;Schlange leer&quot; &lt;&lt; endl;
	Objekt *temp=sz;
	while(temp != NULL){
		temp-&gt;data.Print();
		temp=temp-&gt;tail;
	}
}
</code></pre>
<p>Das Problem dabei: print() funktioniert natürlich nur für komplexe Zahlen, da diese eine Funktion Print() besitzen. Wenn ich aber z.B. eine int Schlange möchte, so hat int keine Funktion Print(). Dann müsste ich ja irgendwie in der Klasse int die Funktion implementieren, kann aber nicht im Header von int rumbasteln und somit auch kein Print() implementieren, oder?</p>
<p>Meine Frage ist also, ob ich irgendwie auf bestimmte Typen reagieren kann, z.B. indem ich eine Funktion print()&lt;Complex&gt; und eine print()&lt;int&gt; in meine Klasse Queue einbaue. Funktioniert das, und wenn ja, könntet ihr mir sagen, wie? <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>
<p>Danke &amp; Schöne Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259924/bei-templates-auf-verschiedene-typen-reagieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 16:29:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259924.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jan 2010 13:02:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 13:02:28 GMT]]></title><description><![CDATA[<p>Hey Leute <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>
<p>Meine Übungsaufgabe war gerade, eine Klasse zu bauen, die eine Queue implementiert, die dynamisch auf den Typ reagiert, also Templates.</p>
<p>Nun war das Beispiel mit komplexen Zahlen, eine Klasse Complex inkl. Print() wurde schon geliefert. Diese habe ich dann einfach benutzt:</p>
<pre><code>template &lt;class T&gt; void Schlange&lt;T&gt;::print(){
	if(empty()) cout &lt;&lt; &quot;Schlange leer&quot; &lt;&lt; endl;
	Objekt *temp=sz;
	while(temp != NULL){
		temp-&gt;data.Print();
		temp=temp-&gt;tail;
	}
}
</code></pre>
<p>Das Problem dabei: print() funktioniert natürlich nur für komplexe Zahlen, da diese eine Funktion Print() besitzen. Wenn ich aber z.B. eine int Schlange möchte, so hat int keine Funktion Print(). Dann müsste ich ja irgendwie in der Klasse int die Funktion implementieren, kann aber nicht im Header von int rumbasteln und somit auch kein Print() implementieren, oder?</p>
<p>Meine Frage ist also, ob ich irgendwie auf bestimmte Typen reagieren kann, z.B. indem ich eine Funktion print()&lt;Complex&gt; und eine print()&lt;int&gt; in meine Klasse Queue einbaue. Funktioniert das, und wenn ja, könntet ihr mir sagen, wie? <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>
<p>Danke &amp; Schöne Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846998</guid><dc:creator><![CDATA[jakap]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 13:05:18 GMT]]></title><description><![CDATA[<p>Ich geb dir nur mal das Stichwort. <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 />
Spezialisierung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847000</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 13:21:58 GMT]]></title><description><![CDATA[<p>Wobei ich das doof fände, wenn sich die Standard-Implementierung auf ein print() verlässt, und du dann für alle anderen Typen, die kein print() haben, eine eigene Spezialisierung schreiben musst.</p>
<p>Ich würde mich darauf verlassen, dass der Typ einen &quot;operator&lt;&lt;&quot; hat und den verwenden. Und eigentlich sollte man für seine Klassen auch den operator&lt;&lt; anbieten, wenn man die Ausgabe eines Objektes unterstützen will...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847010</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 29 Jan 2010 13:21:58 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 17:10:37 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>Wobei ich das doof fände, wenn sich die Standard-Implementierung auf ein print() verlässt, und du dann für alle anderen Typen, die kein print() haben, eine eigene Spezialisierung schreiben musst.</p>
<p>Ich würde mich darauf verlassen, dass der Typ einen &quot;operator&lt;&lt;&quot; hat und den verwenden. Und eigentlich sollte man für seine Klassen auch den operator&lt;&lt; anbieten, wenn man die Ausgabe eines Objektes unterstützen will...</p>
</blockquote>
<p>Es ist sogar üblich, dass man wirklich eine print Funktion hat, dann aber den &lt;&lt;-Operator so implementiert, dass er einfach print benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847154</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 29 Jan 2010 17:10:37 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 17:20:55 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Es ist sogar üblich, dass man wirklich eine print Funktion hat, dann aber den &lt;&lt;-Operator so implementiert, dass er einfach print benutzt.</p>
</blockquote>
<p>Mag sein (hab ich auch schon öfters gesehen und manchmal gemacht). Aber wenn man ein Template schreibt, macht es mehr Sinn das allgemeinere zu verwenden, und das ist operator&lt;&lt;. Spezialisieren kann man immer noch. Denn für die integrierten Typen (int, double, ...) gibt es operator&lt;&lt;, aber kein int::print(). Und &quot;eine print-Funktion&quot; hat keinen definierten Namen. print, Print, write, ...<br />
Das ist eigentlich was ich sagen wollte. Es ist nicht weit gedacht, ein template so zu schreiben, dass es erstmal mit einem bestimmten Typ funktionert, und den Rest dann über Spezialisierung regeln zu wollen - um dann am Ende so zu enden wie in C: Für jeden Typen eine eigene identische Implementierung <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1847159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847159</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 29 Jan 2010 17:20:55 GMT</pubDate></item><item><title><![CDATA[Reply to Bei Templates auf verschiedene Typen reagieren on Fri, 29 Jan 2010 17:27:08 GMT]]></title><description><![CDATA[<p>Jaja. Ich stimmt dir schon zu. Nur wollte ich halt sagen, dass man üblicherweise schon eine print Funktion hat, die vom Operator benutzt wird.<br />
Aber grundsätzlich sollte man schon den &lt;&lt;-Operator anbieten, wenn man eine Ausgabe will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1847163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1847163</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 29 Jan 2010 17:27:08 GMT</pubDate></item></channel></rss>