<?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[Funktion mit bestimmten Paramtern woanders aufrufen]]></title><description><![CDATA[<p>Hallo, ich würde gerne eine Funktion mit bestimmten Parametern von einem anderen Objekt später aufrufen lassen. Ist das irgendwie möglich?<br />
Ich bin auf boost::function gestoßen aber damit erhalte ich nur einen Zeiger auf die Funktion und die Parameter müssen nochmal vom aufrufenden Objekt gesetzt werden.</p>
<p>Also im groben:</p>
<pre><code class="language-cpp">void klasse1::func1()
{
  TypX zeiger = erzeuge Zeiger auf func2 mit Parameter 1 und 2
  klasse2::func3(zeiger)
}

void klasse1::func2(int a, int b)
{
  int c = a + b;
}

void klasse2::doIt()
{
  liste.front()-&gt;führeFunktionMitParameterAus()
}

void klasse2::addTypX(TypX zeiger)
{
  liste.push_back(zeiger);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/274653/funktion-mit-bestimmten-paramtern-woanders-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 08:45:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274653.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Sep 2010 09:35:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 09:35:10 GMT]]></title><description><![CDATA[<p>Hallo, ich würde gerne eine Funktion mit bestimmten Parametern von einem anderen Objekt später aufrufen lassen. Ist das irgendwie möglich?<br />
Ich bin auf boost::function gestoßen aber damit erhalte ich nur einen Zeiger auf die Funktion und die Parameter müssen nochmal vom aufrufenden Objekt gesetzt werden.</p>
<p>Also im groben:</p>
<pre><code class="language-cpp">void klasse1::func1()
{
  TypX zeiger = erzeuge Zeiger auf func2 mit Parameter 1 und 2
  klasse2::func3(zeiger)
}

void klasse1::func2(int a, int b)
{
  int c = a + b;
}

void klasse2::doIt()
{
  liste.front()-&gt;führeFunktionMitParameterAus()
}

void klasse2::addTypX(TypX zeiger)
{
  liste.push_back(zeiger);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1959402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959402</guid><dc:creator><![CDATA[storm009]]></dc:creator><pubDate>Thu, 30 Sep 2010 09:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 09:42:30 GMT]]></title><description><![CDATA[<p><a href="http://www.boost.org/doc/libs/1_44_0/libs/bind/bind.html" rel="nofollow">boost::bind</a> mit <a href="http://www.boost.org/doc/libs/1_41_0/doc/html/function.html" rel="nofollow">boost::function</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959411</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 30 Sep 2010 09:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 09:43:21 GMT]]></title><description><![CDATA[<p>Dann stoß auch mal auf boost::bind.</p>
<p>edit: Zu langsam.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959412</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 30 Sep 2010 09:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 09:45:46 GMT]]></title><description><![CDATA[<p>Wenn dein &quot;liste&quot; ein STL-Container ist, und ich dein Vorhaben richtig deute, dann sollte das per Prädikat funktionieren was du möchtest.</p>
<p><a href="http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Standard_Template_Library#Algorithmen" rel="nofollow">STL-Algorithmen</a></p>
<p><em>Edith weiß noch zu sagen</em>: Und wenn es kein STL-Container ist, wurde boost::bind ja schon gefunden. (auch zu langsam <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959413</guid><dc:creator><![CDATA[Yamakuzure]]></dc:creator><pubDate>Thu, 30 Sep 2010 09:45:46 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 10:27:56 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnellen Antworten.</p>
<p>Auf boost::bind bin ich vorher auch schon gestoßen aber wird die im bind definierte Funktion nicht bei der Übergabe schon direkt ausgeführt?</p>
<p>Ich müsste ja das boost::bind in eine Liste speichern und zu einem späteren Zeitpunkt ausführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959444</guid><dc:creator><![CDATA[storm009]]></dc:creator><pubDate>Thu, 30 Sep 2010 10:27:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 10:43:18 GMT]]></title><description><![CDATA[<p>storm009 schrieb:</p>
<blockquote>
<p>Auf boost::bind bin ich vorher auch schon gestoßen aber wird die im bind definierte Funktion nicht bei der Übergabe schon direkt ausgeführt?</p>
<p>Ich müsste ja das boost::bind in eine Liste speichern und zu einem späteren Zeitpunkt ausführen.</p>
</blockquote>
<p>Nein.. wird nicht direkt ausgeführt... genau dafür ist boost::bind!</p>
<p>Edit:</p>
<pre><code class="language-cpp">class klasse1;

class klasse2
{
	typedef function&lt;void()&gt; function_t;

public:
	void doIt()
	{
		if (!liste.empty())
			(liste.front())();
	}

	void addTypeX(function_t func)
	{
		liste.push_back(func);
	}

private:
	std::list&lt;function_t&gt; liste;
};

class klasse1
{
	klasse2&amp; xyz;

public:
	explicit klasse1(klasse2 &amp;ref) : xyz(ref)
	{
	}

	void func1()
	{
		xyz.addTypeX(bind(&amp;klasse1::func2, this, 1, 2));
	}

	void func2(int a, int b)
	{
		int c = a + b;
		std::cout &lt;&lt; a &lt;&lt; &quot;+&quot; &lt;&lt; b &lt;&lt; &quot;=&quot; &lt;&lt; c &lt;&lt; std::endl;
	}
};

int main (void)
{
	klasse2 foo;
	klasse1 bar(foo);
	bar.func1();
	foo.doIt();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1959452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959452</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 30 Sep 2010 10:43:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit bestimmten Paramtern woanders aufrufen on Thu, 30 Sep 2010 11:22:10 GMT]]></title><description><![CDATA[<p>Super!!! Vielen Dank für das Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959476</guid><dc:creator><![CDATA[storm009]]></dc:creator><pubDate>Thu, 30 Sep 2010 11:22:10 GMT</pubDate></item></channel></rss>