<?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[function argument template specialisation]]></title><description><![CDATA[<p>Hi,</p>
<p>habe eine callback funktion</p>
<pre><code class="language-cpp">static void output(element&lt;double&gt;&amp; ele) { cout&lt;&lt;setw(20)&lt;&lt;(char*)(ele)&lt;&lt;setw(10)&lt;&lt;long(ele)&lt;&lt;endl; }
</code></pre>
<p>für eine stack implementierung.<br />
Aufruf:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot; 

using namespace std;

static void output(element&lt;&gt;&amp; ele);

int _tmain(int argc, _TCHAR* argv[])
{
	stack&lt;double&gt; vars;
	char selection;
	char name[20];
	long value;

	for(;;)
	{
		cout&lt;&lt;&quot;&lt;N&gt;eue Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;L&gt;öschen einer Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;A&gt;nzeigen einer Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;W&gt;ert einer Variable ändern&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;D&gt;rucken aller am Schirm&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;Q&gt;uit&quot; &lt;&lt; endl;
		cin&gt;&gt;selection;
		switch(tolower(selection))
		{
			case 'q': return 0;
			case 'n': cout&lt;&lt;&quot;Name: &quot;; cin&gt;&gt;name; cout&lt;&lt;&quot;Wert: &quot;; cin&gt;&gt;value; vars.newvar(name, value);break;
			case 'l': cout&lt;&lt;&quot;Name zu löschen: &quot;;cin&gt;&gt;name; cout&lt;&lt;(vars.delvar(name) ? &quot;gelöscht&quot;:&quot;nicht gelöscht&quot;)&lt;&lt;endl; break;
			case 'a': cout&lt;&lt;&quot;Wert anzeigen für Name: &quot;;
				      cin&gt;&gt;name;
					  if (vars.getval(name,value)) cout&lt;&lt;&quot;gefunden mit wert &quot;&lt;&lt;value&lt;&lt;endl;
					  else cout&lt;&lt;&quot;nicht gefunden&quot;&lt;&lt;endl;
					  break;
			case 'w': cout&lt;&lt;&quot;Wert für name ändern: &quot;;
					  cin&gt;&gt;name;
				      cout&lt;&lt;&quot;Neuer Wert: &quot;; cin&gt;&gt;value;
					  if (vars.changeval(name,value)) cout&lt;&lt;&quot;gefunden und wert geändert&quot;&lt;&lt;endl;
					  else cout&lt;&lt;&quot;nicht gefunden&quot;&lt;&lt;endl;
					  break;
			case 'd': cout&lt;&lt;endl&lt;&lt;setw(20)&lt;&lt;&quot;NAME&quot;&lt;&lt;setw(10)&lt;&lt;&quot;WERT&quot;&lt;&lt;endl;
			---------&gt;    vars.walk(output); &lt;---------
				      break;
			default:  cout&lt;&lt;&quot;Falsche Auswahl.&quot;&lt;&lt;endl;
	   }
	}

	return 0;
}

static void output(element&lt;double&gt;&amp; ele) { cout&lt;&lt;setw(20)&lt;&lt;(char*)(ele)&lt;&lt;setw(10)&lt;&lt;long(ele)&lt;&lt;endl; }
</code></pre>
<p>bei</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void stack&lt;T&gt;::walk(typename t_to_do_fkt&lt;T&gt;::fpt to_do)
{ 
	knoten* q;
	for (q=anfang; q; q = q-&gt;next) (*to_do) (q-&gt;info);
}
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class Ty&gt;
struct t_to_do_fkt
{ 
	typedef void (*fpt) (element&lt;Ty&gt;&amp; ele);
};
</code></pre>
<p>leider</p>
<pre><code>error C2664: 'stack&lt;T&gt;::walk': Konvertierung des Parameters 1 von 'void (__cdecl *)(element&lt;&gt; &amp;)' in 'void (__cdecl *)(element&lt;Ty&gt; &amp;)' nicht möglich
</code></pre>
<p>ohgottwassollichnurmachendanke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235831/function-argument-template-specialisation</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 03:27:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235831.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Mar 2009 22:36:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to function argument template specialisation on Fri, 06 Mar 2009 22:36:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>habe eine callback funktion</p>
<pre><code class="language-cpp">static void output(element&lt;double&gt;&amp; ele) { cout&lt;&lt;setw(20)&lt;&lt;(char*)(ele)&lt;&lt;setw(10)&lt;&lt;long(ele)&lt;&lt;endl; }
</code></pre>
<p>für eine stack implementierung.<br />
Aufruf:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot; 

using namespace std;

static void output(element&lt;&gt;&amp; ele);

int _tmain(int argc, _TCHAR* argv[])
{
	stack&lt;double&gt; vars;
	char selection;
	char name[20];
	long value;

	for(;;)
	{
		cout&lt;&lt;&quot;&lt;N&gt;eue Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;L&gt;öschen einer Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;A&gt;nzeigen einer Variable&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;W&gt;ert einer Variable ändern&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;D&gt;rucken aller am Schirm&quot; &lt;&lt; endl &lt;&lt;
			&quot;&lt;Q&gt;uit&quot; &lt;&lt; endl;
		cin&gt;&gt;selection;
		switch(tolower(selection))
		{
			case 'q': return 0;
			case 'n': cout&lt;&lt;&quot;Name: &quot;; cin&gt;&gt;name; cout&lt;&lt;&quot;Wert: &quot;; cin&gt;&gt;value; vars.newvar(name, value);break;
			case 'l': cout&lt;&lt;&quot;Name zu löschen: &quot;;cin&gt;&gt;name; cout&lt;&lt;(vars.delvar(name) ? &quot;gelöscht&quot;:&quot;nicht gelöscht&quot;)&lt;&lt;endl; break;
			case 'a': cout&lt;&lt;&quot;Wert anzeigen für Name: &quot;;
				      cin&gt;&gt;name;
					  if (vars.getval(name,value)) cout&lt;&lt;&quot;gefunden mit wert &quot;&lt;&lt;value&lt;&lt;endl;
					  else cout&lt;&lt;&quot;nicht gefunden&quot;&lt;&lt;endl;
					  break;
			case 'w': cout&lt;&lt;&quot;Wert für name ändern: &quot;;
					  cin&gt;&gt;name;
				      cout&lt;&lt;&quot;Neuer Wert: &quot;; cin&gt;&gt;value;
					  if (vars.changeval(name,value)) cout&lt;&lt;&quot;gefunden und wert geändert&quot;&lt;&lt;endl;
					  else cout&lt;&lt;&quot;nicht gefunden&quot;&lt;&lt;endl;
					  break;
			case 'd': cout&lt;&lt;endl&lt;&lt;setw(20)&lt;&lt;&quot;NAME&quot;&lt;&lt;setw(10)&lt;&lt;&quot;WERT&quot;&lt;&lt;endl;
			---------&gt;    vars.walk(output); &lt;---------
				      break;
			default:  cout&lt;&lt;&quot;Falsche Auswahl.&quot;&lt;&lt;endl;
	   }
	}

	return 0;
}

static void output(element&lt;double&gt;&amp; ele) { cout&lt;&lt;setw(20)&lt;&lt;(char*)(ele)&lt;&lt;setw(10)&lt;&lt;long(ele)&lt;&lt;endl; }
</code></pre>
<p>bei</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void stack&lt;T&gt;::walk(typename t_to_do_fkt&lt;T&gt;::fpt to_do)
{ 
	knoten* q;
	for (q=anfang; q; q = q-&gt;next) (*to_do) (q-&gt;info);
}
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class Ty&gt;
struct t_to_do_fkt
{ 
	typedef void (*fpt) (element&lt;Ty&gt;&amp; ele);
};
</code></pre>
<p>leider</p>
<pre><code>error C2664: 'stack&lt;T&gt;::walk': Konvertierung des Parameters 1 von 'void (__cdecl *)(element&lt;&gt; &amp;)' in 'void (__cdecl *)(element&lt;Ty&gt; &amp;)' nicht möglich
</code></pre>
<p>ohgottwassollichnurmachendanke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675546</guid><dc:creator><![CDATA[ty]]></dc:creator><pubDate>Fri, 06 Mar 2009 22:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to function argument template specialisation on Sat, 07 Mar 2009 00:06:04 GMT]]></title><description><![CDATA[<p>Nun die Fehlermeldung sagt doch schon wo dein Problem sein könnte: <code>element&lt;&gt;</code> ist nicht äquivalent mit <code>element&lt;Ty&gt;</code> . Zu dem Zeitpunkt wo der Compiler die Fehlermeldung generiert ist im Scope nur die Überladung für <code>element&lt;&gt;</code> bekannt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675567</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Sat, 07 Mar 2009 00:06:04 GMT</pubDate></item><item><title><![CDATA[Reply to function argument template specialisation on Sat, 07 Mar 2009 00:28:20 GMT]]></title><description><![CDATA[<p>Pass ausserdem auf, wenn du</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>in deinem Programm hast und gleichzeitig Bezeichner wählst, die sich mit denen der Standardbibliothek überschneiden ( <code>stack</code> ). Nicht dass du später in Namenskonflikte gerätst und völlig ratlos dastehst. <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/1675573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675573</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 07 Mar 2009 00:28:20 GMT</pubDate></item></channel></rss>