<?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[template für Methode]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll als Hausaufgabe Klassen erstellen mit 3 Membervariablen und 2 Methoden (Schueler, Wagen, Tier). Allerdings gibt es da ein kleines Problem, da von Wagen und Tier jeweils die dritte Membervariable einen Zahlentyp enthält und ich mit der Methode lesen() einen der Werte jeweils zurückgeben möchte.<br />
Ich habe mich noch nicht wirklich mit Templates beschäftigt, daher weiß ich leider nicht wo der Fehler ist. Die Fehlermeldung ist</p>
<blockquote>
<p>klassen.cpp: In function <code>int main()': klassen.cpp:41: error: no matching function for call to</code>wagen::lesen(int)'<br />
klassen.cpp:42: error: no matching function for call to <code>wagen::lesen(int)' klassen.cpp:43: error: no matching function for call to</code>wagen::lesen(int)'</p>
</blockquote>
<p>Die Methode (die lesen Methode aus der tier-Klasse schaut fast gleich aus):</p>
<pre><code class="language-cpp">template &lt;typename autoinfo&gt; autoinfo lesen(int auswahl)
		{
			switch(auswahl)
			{
				case 1: return this-&gt;marke; break;
				case 2: return this-&gt;bezeichnung; break;
				case 3: return this-&gt;preis; break;
			}
		}
</code></pre>
<p>Ich habe es auch mit einem cast nach autoinfo versucht, aber noch immer der gleiche Fehler. Ich glaube, wegen dem Schlüsselwort template oder wegen autoinfo kann lesen nicht mehr gefunden werden. Stimmt das?</p>
<p>Das Ganze habe ich auf <a href="http://de.wikibooks.org/wiki/C++-Programmierung:_Funktionstemplates" rel="nofollow">http://de.wikibooks.org/wiki/C++-Programmierung:_Funktionstemplates</a> nachgelesen.</p>
<p>Was ist der Fehler und wie behebe ich ihn?</p>
<p>Danke,<br />
Squall</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210898/template-für-methode</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 18:40:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210898.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Apr 2008 15:08:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 15:08:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich soll als Hausaufgabe Klassen erstellen mit 3 Membervariablen und 2 Methoden (Schueler, Wagen, Tier). Allerdings gibt es da ein kleines Problem, da von Wagen und Tier jeweils die dritte Membervariable einen Zahlentyp enthält und ich mit der Methode lesen() einen der Werte jeweils zurückgeben möchte.<br />
Ich habe mich noch nicht wirklich mit Templates beschäftigt, daher weiß ich leider nicht wo der Fehler ist. Die Fehlermeldung ist</p>
<blockquote>
<p>klassen.cpp: In function <code>int main()': klassen.cpp:41: error: no matching function for call to</code>wagen::lesen(int)'<br />
klassen.cpp:42: error: no matching function for call to <code>wagen::lesen(int)' klassen.cpp:43: error: no matching function for call to</code>wagen::lesen(int)'</p>
</blockquote>
<p>Die Methode (die lesen Methode aus der tier-Klasse schaut fast gleich aus):</p>
<pre><code class="language-cpp">template &lt;typename autoinfo&gt; autoinfo lesen(int auswahl)
		{
			switch(auswahl)
			{
				case 1: return this-&gt;marke; break;
				case 2: return this-&gt;bezeichnung; break;
				case 3: return this-&gt;preis; break;
			}
		}
</code></pre>
<p>Ich habe es auch mit einem cast nach autoinfo versucht, aber noch immer der gleiche Fehler. Ich glaube, wegen dem Schlüsselwort template oder wegen autoinfo kann lesen nicht mehr gefunden werden. Stimmt das?</p>
<p>Das Ganze habe ich auf <a href="http://de.wikibooks.org/wiki/C++-Programmierung:_Funktionstemplates" rel="nofollow">http://de.wikibooks.org/wiki/C++-Programmierung:_Funktionstemplates</a> nachgelesen.</p>
<p>Was ist der Fehler und wie behebe ich ihn?</p>
<p>Danke,<br />
Squall</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493060</guid><dc:creator><![CDATA[Squall]]></dc:creator><pubDate>Wed, 16 Apr 2008 15:08:14 GMT</pubDate></item><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 15:20:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;typename T&gt; T wagen::lesen(int auswahl)
        {
            switch(auswahl)
            {
                case 1: return this-&gt;marke; break;
                case 2: return this-&gt;bezeichnung; break;
                case 3: return this-&gt;preis; break;
            }
        }
</code></pre>
<p>Soweit ich verstanden hab, gehts hier doch um zwei Werte die ausgegeben sollen, das könntest du einfach über das überladen machen...<br />
stell dir vor, jemand g ibt da lesen&lt;float&gt; ein, dann hast du ein problem.^^<br />
Ahja iwas stimmt in deiner main auch nicht, poste den code ma^^</p>
<p>Guck mal hier: <a href="http://www.cpp-tutor.de/cpp/le15/le15_02.htm#einleitung" rel="nofollow">http://www.cpp-tutor.de/cpp/le15/le15_02.htm#einleitung</a><br />
Da bekommst du noch infos zu den templates <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="😉"
    /><br />
Edit: Ahja ich würde es doch lieber mit Überladen probieren, da der code sehr unschön ist^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493065</guid><dc:creator><![CDATA[markusrw]]></dc:creator><pubDate>Wed, 16 Apr 2008 15:20:42 GMT</pubDate></item><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 15:56:19 GMT]]></title><description><![CDATA[<p>In wie fern überladen? Ich will ja eigentlich nur, dass die Werte zurückgeliefert werden. Cout kann bei bedarf in der main Funktion verwendet werden.</p>
<p>Wieso eigentlich wagen::lesen schreiben, diese Funktion befindet sich direkt in der Klasse, ich wollte sie nur halt nicht komplett posten.^^</p>
<p>Die main Funktion schaut so aus:</p>
<pre><code class="language-cpp">int main()
{
	wagen autohaus[3];

	autohaus[0].aendern(&quot;Mercedes&quot;, &quot;SLR Coupé / Roadstar&quot;, 476000.00);
	autohaus[1].aendern(&quot;Mercedes&quot;, &quot;CL Coupé&quot;, 112276.50);
	autohaus[2].aendern(&quot;Mercedes&quot;, &quot;SLK Roadstar&quot;, 36503.25);

	cout &lt;&lt; schule[0].lesen(1) &lt;&lt; endl
	     &lt;&lt; schule[0].lesen(2) &lt;&lt; endl
	     &lt;&lt; schule[0].lesen(3) &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1493081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493081</guid><dc:creator><![CDATA[Squall]]></dc:creator><pubDate>Wed, 16 Apr 2008 15:56:19 GMT</pubDate></item><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 16:41:44 GMT]]></title><description><![CDATA[<p>Deine Funktion lesen soll also je nach Bedarf ein string, ein int oder irgendeinen anderen Typ zurückgeben?<br />
Das geht so nicht. Auch nicht mit Templates.<br />
Wenn die Funktion nur zur Ausgabe verwendet werden soll gib doch einfach alle Werte als String zurück (mit entsprechenden Umwandlungen).<br />
Noch was zu dem template. Bei deiner Templatefunktion ist der Rückgabewert ein Template. Den kann der Compiler aber nicht zur Compilezeit herausfinden. Du müsstest den also mit angeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493111</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 16 Apr 2008 16:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 16:51:00 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Deine Funktion lesen soll also je nach Bedarf ein string, ein int oder irgendeinen anderen Typ zurückgeben?</p>
</blockquote>
<p>Jup.</p>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Wenn die Funktion nur zur Ausgabe verwendet werden soll gib doch einfach alle Werte als String zurück (mit entsprechenden Umwandlungen).</p>
</blockquote>
<p>Joa, das war meine erste Idee, aber ich wollte es mal so ausprobieren. Nun ja, ich lass es nun als string. <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>Braunstein schrieb:</p>
<blockquote>
<p>Noch was zu dem template. Bei deiner Templatefunktion ist der Rückgabewert ein Template. Den kann der Compiler aber nicht zur Compilezeit herausfinden. Du müsstest den also mit angeben.</p>
</blockquote>
<p>Ach so, hmmpf... Ich werde mich demnächst einfach mal in templates reinarbeiten.</p>
<p>Dankeschön! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1493121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493121</guid><dc:creator><![CDATA[Squall]]></dc:creator><pubDate>Wed, 16 Apr 2008 16:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to template für Methode on Wed, 16 Apr 2008 17:08:55 GMT]]></title><description><![CDATA[<p>Das ist leider kein gutes Beispiel für eine Template-Funktion!</p>
<p>Und den Fehler werde ich dir jetzt erklären:</p>
<p>Der Templatetyp kann nur aus den Funktionsparametern automatisch bestimmt werden, nicht aus dem Rückgabewert.<br />
Du müßtest also jeweils beim Aufruf noch den entsprechenden Typ angeben, z.B.<br />
schule[0].lesen&lt;float&gt;(3)</p>
<p>Nur leider bringt dir das dann auch nichts... teste es einfach mal.</p>
<p>Der Sinn einer Template-Methode ist, daß man sich Schreibarbeit sparen will, anstatt jeweils für jeden Typ die Funktion zu schreiben.</p>
<p>Eine Funktion kann aber niemals verschiedene Rückgabetypen haben!!!</p>
<p>Du solltest einfach für jeden Wert eine eigene Funktion schreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1493137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1493137</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 16 Apr 2008 17:08:55 GMT</pubDate></item></channel></rss>