<?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[Funktionspointer übergeben]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe zwei Klasse die wie folgt aussehen:</p>
<pre><code class="language-cpp">class B {
public:
  B(/* hier kommt der Funktionspointer rein*/){
    // irgend welcher Code
    // Hier dann der aufruf A::barA
  }
  ~B(){}
};

class A {
public:
  A(){}
  ~A(){}
  void fooA () {
     B *b = new B(/* übergebe ich den Aufruf A::barA */);
  }
  void barA ( int a ) {
     // Do something
  }
};
</code></pre>
<p>Klasse A wird irgendwann mal ein Objekt der Klasse B erstellen und soll ihm nun den Funktionspointer &quot;barA&quot; übergeben damit die Klasse B den irgend wann mal aufrufen kann.</p>
<p>Das besondere daran soll halt sein, dass die Klasse B nicht ausdrücklich einen Funktionspointer von A annehmen soll, sondern irgend ein Funktionspointer von einer X beliebigen Klasse.</p>
<p>Also ich müsste da mit Templates arbeiten, aber finde kein Ansatz wie ich das realisieren soll.</p>
<p>Gruß<br />
Slux</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307090/funktionspointer-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307090.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Aug 2012 10:39:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer übergeben on Thu, 16 Aug 2012 10:39:20 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>habe zwei Klasse die wie folgt aussehen:</p>
<pre><code class="language-cpp">class B {
public:
  B(/* hier kommt der Funktionspointer rein*/){
    // irgend welcher Code
    // Hier dann der aufruf A::barA
  }
  ~B(){}
};

class A {
public:
  A(){}
  ~A(){}
  void fooA () {
     B *b = new B(/* übergebe ich den Aufruf A::barA */);
  }
  void barA ( int a ) {
     // Do something
  }
};
</code></pre>
<p>Klasse A wird irgendwann mal ein Objekt der Klasse B erstellen und soll ihm nun den Funktionspointer &quot;barA&quot; übergeben damit die Klasse B den irgend wann mal aufrufen kann.</p>
<p>Das besondere daran soll halt sein, dass die Klasse B nicht ausdrücklich einen Funktionspointer von A annehmen soll, sondern irgend ein Funktionspointer von einer X beliebigen Klasse.</p>
<p>Also ich müsste da mit Templates arbeiten, aber finde kein Ansatz wie ich das realisieren soll.</p>
<p>Gruß<br />
Slux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242384</guid><dc:creator><![CDATA[Slux]]></dc:creator><pubDate>Thu, 16 Aug 2012 10:39:20 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer übergeben on Thu, 16 Aug 2012 11:41:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template&lt;typename T&gt;
class B
{
	public:
		B(void (T::*ptmf)(int))
		{
			A a;
			(a.*(ptmf))(123);
		}
		~B() {}
};

class A
{
	public:
		A()  {}
		~A() {}
		void fooA ()
		{
			B&lt;A&gt; *b = new B&lt;A&gt;(&amp;A::barA);
			delete b;
		}
		void barA ( int a )
		{
			cout &lt;&lt; a;
		}
};

int main()
{
	A a;
	a.fooA();
}
</code></pre>
<p>Allerdings sieht das Ganze sehr merkwürdig aus und ich habe keinen blassen Dunst, was du damit überhaupt erreichen willst. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242433</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 16 Aug 2012 11:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer übergeben on Thu, 16 Aug 2012 12:01:24 GMT]]></title><description><![CDATA[<p>EDIT:<br />
out's Quelltext nicht richtig gelesen - sorry.</p>
<pre><code class="language-cpp">class B {
public:
  B(std::function&lt; void (int) &gt; func){
    // irgend welcher Code
    func(123);
  }
  ~B(){}
};

class A {
public:
  A(){}
  ~A(){}
  void fooA () {
     B *b = new B(std::bind(&amp;A::barA, this, _1));
  }
  void barA ( int a ) {
     // Do something
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2242440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242440</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer übergeben on Thu, 16 Aug 2012 12:02:54 GMT]]></title><description><![CDATA[<p>Ich habe das Prinzip stark vereinfacht von dem was ich da gerade habe und deswegen wirkt es etwas komisch.</p>
<p>Hab das Problem noch auf eine andere Art und Weise gelöst - ich habe mit signals gearbeitet, boost::signal bzw sigc::signal, damit kann man etwas komplexer arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2242444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2242444</guid><dc:creator><![CDATA[Slux]]></dc:creator><pubDate>Thu, 16 Aug 2012 12:02:54 GMT</pubDate></item></channel></rss>