<?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[vererbung, funktionsparameter und funktionszeiger.]]></title><description><![CDATA[<pre><code class="language-cpp">class a { };
class b : public a { };

void f(a&amp; A);

template&lt;typename T&gt; class x {
  public:
    void f(void (*f)(T t));
};

int main(void) {
  x&lt;b&amp;&gt; X;
  X.f(f);
  return 0;
}
</code></pre>
<p>wieso ist in dem fall ein b kein a, sodass der compiler die globale funktion f nicht auf die methode f der klasse übergeben will?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217877/vererbung-funktionsparameter-und-funktionszeiger</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 05:05:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217877.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 12 Jul 2008 17:52:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sat, 12 Jul 2008 17:52:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class a { };
class b : public a { };

void f(a&amp; A);

template&lt;typename T&gt; class x {
  public:
    void f(void (*f)(T t));
};

int main(void) {
  x&lt;b&amp;&gt; X;
  X.f(f);
  return 0;
}
</code></pre>
<p>wieso ist in dem fall ein b kein a, sodass der compiler die globale funktion f nicht auf die methode f der klasse übergeben will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546329</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sat, 12 Jul 2008 17:52:36 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sat, 12 Jul 2008 18:08:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void f(a* A);
</code></pre>
<p>Zeiger kann man Kasten, Instanzen nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546334</guid><dc:creator><![CDATA[...........]]></dc:creator><pubDate>Sat, 12 Jul 2008 18:08:28 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sat, 12 Jul 2008 22:19:16 GMT]]></title><description><![CDATA[<p>ich hab hier eine referenz und keine instanz. ein aufruf der globalen funktion f mit einer instanz von b klappt natürlich wunderbar. deshalb sollte eben auch der funktionszeiger so behandelt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546458</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sat, 12 Jul 2008 22:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sat, 12 Jul 2008 23:24:24 GMT]]></title><description><![CDATA[<p>hola</p>
<p>weil du deinen parameter void(<em>)(a&amp;) nicht in einen parameter void(</em>)(b&amp;) wandeln kannst.<br />
die beiden funktionszeiger als selbst sind naemlich nicht mit einander verwandt, sprich void(<em>)(b&amp;) ist nicht von void(</em>)(a&amp;) abgeleitet.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546473</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 12 Jul 2008 23:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sat, 12 Jul 2008 23:31:25 GMT]]></title><description><![CDATA[<p>so wuerde es gehen. haengt naetuerlich davon ab, was du machen willst</p>
<pre><code class="language-cpp">class a { };
class b : public a { };

void f(a&amp; A) { }

template&lt;typename T&gt; class x {
  public:
	 typedef void (*myfunc)(a&amp; temp);
	 void f(myfunc) { myfunc(b); }
	 T var;
};

int main(void) {
  x&lt;b&gt; X;
  X.f(f);
  return 0;
}
</code></pre>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546476</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 12 Jul 2008 23:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sun, 13 Jul 2008 00:42:46 GMT]]></title><description><![CDATA[<p>@Meep Meep<br />
leider ist das keine option. die leute werden halt je eine funktion erstellen müssen anstatt einer mit der gemeinsamen basis klasse.</p>
<p>ich experimentier mit gcc 4.3 und den neuen variadic templates, um damit eine generische event api zu bauen. beispielweise bei der gui programmierung wäre das dann praktisch, wenn ein event zb. einen button als parameter hat und ein anderer event ein anderes widget. erben alle widgets von einer gemeinsamen basisklasse, so könnte man generische event, wie drauf klicken oder so, über die generische basisklasse abfangen. aber leider klappt das nur mit mehreren funktionen (einer pro widget).</p>
<p>grundsätzlich sehe ich keinen technischen grund, wieso mein code nicht möglich sein sollte. es scheint mir eher eine inkonsistenz im c++ standard zu sein. oder sieht hier jemand ein problem? leider hat man null einfluss auf den standard. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546486</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sun, 13 Jul 2008 00:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sun, 13 Jul 2008 08:29:04 GMT]]></title><description><![CDATA[<p>da der funktionsaufrauf ansich von der signature her kompatibel sein muesste, da b von a abgeleitet ist, koennte man vielleicht auch einfach den funktionspointer casten.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546511</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 13 Jul 2008 08:29:04 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sun, 13 Jul 2008 08:50:34 GMT]]></title><description><![CDATA[<p>ich muss zugeben, das ich da mit deinem beispiel code nicht so wirklich klar komme.<br />
koenntest du das konkret nochmal etwas genauer beschreibene, bzw an einem konkreten beispiel aufzeigen ?</p>
<p>im grunde gesehen das gleiche nur halt mittels ner template-funktion wuerde es so auch gehen:</p>
<pre><code class="language-cpp">class a
{
};

class b : public a
{

};

void f(a &amp;A)
{

}

template&lt;typename T&gt;
class x
{
	public:
		template&lt;class func&gt;
		void f(func f)
		{
			T b;
			f(b);
		}
};

int main(void)
{
	x&lt;b&gt; X;
	X.f(f);
	return 0;
}
</code></pre>
<p>aber wie schon gesagt, bin ich mir nicht sicher, das ich ueberhaupt weiss was du genau willst.</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546517</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 13 Jul 2008 08:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Sun, 13 Jul 2008 12:32:54 GMT]]></title><description><![CDATA[<p>im prinzip ist es recht einfach. mein code ist komplizierter als nötig, um das problem aufzuzeigen.</p>
<p>gegenben sind eine basisklasse und eine klasse, die davon erbt. außerdem eine funktion, die als parameter eine refernz auf die basisklasse aufnimmt.<br />
will man nun einem funktionszeiger, der grundsätzliche die gleiche signatur hat, wie die gegebene funktion, mit dem einzigen unterschied, dass er statt der refernz zur basisklasse eine referenz zur abgeleitet klasse aufnimmt, diese gegebene funktion zuweisen, so klappt das nicht.<br />
es sollte aber klappen. rufe ich eine funktion, die als parameter eine beliebige basisklasse aufnimmt, mit einer instanz einer klasse, die von dieser basisklasse erbt, auf, so klappt es ja auch. dementsprechend wäre es eben schön, wenn das mit den funktionszeigern auch klappen würde.</p>
<p>bei multipler vererbung könnte es vielleicht probleme geben. das muss ich mir noch überlegen. sonst sollte es möglich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1546615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1546615</guid><dc:creator><![CDATA[besserwisser]]></dc:creator><pubDate>Sun, 13 Jul 2008 12:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to vererbung, funktionsparameter und funktionszeiger. on Mon, 14 Jul 2008 11:28:39 GMT]]></title><description><![CDATA[<p>--- gestichen ---</p>
<p>Die gleiche Lösung wie oben.</p>
<p>Man sollte sich die Antworten doch noch einmal etwas Gründlicher ansehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547038</guid><dc:creator><![CDATA[tunichtgut]]></dc:creator><pubDate>Mon, 14 Jul 2008 11:28:39 GMT</pubDate></item></channel></rss>