<?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 dynamischem Namen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin noch blutiger Anfänger in C++, deswegen Bitte nicht bei dämlichen Fragen schimpfen <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>
<p>Hier mal ein Codeschnipsel:</p>
<pre><code>cout &lt;&lt; &quot;Mit wem soll agiert werden (1-3)&quot;;
	cin &gt;&gt; aktion;
</code></pre>
<p>Nun soll je nach Auswahl eine Funktion aufgerufen werden.</p>
<p>Die einfachste Methode wäre nun:</p>
<pre><code>switch(aktion)
	{
	case 1:
		{
			aktion_mann1();
		} break;

	case 2:
		{
			aktion_mann2();
		} break;

	case 3:
		{
			aktion_mann3();
		} break;
	}
</code></pre>
<p>Nun habe ich aber mehr als 3 Möglichkeiten, was sich natürlich negativ auf die Übersicht des Scripts auswiirkt.</p>
<p>Kann ich nun (wenn's geht, relativ unkompliziert) eine Funktion ähnlich wie Arrays mit einem dynamischen Namen schreiben,<br />
z.B.</p>
<pre><code>void aktion_mann[1]();
void aktion_mann[2]();
void aktion_mann[3]();
</code></pre>
<p>Und diese dann auch ähnlich wie Arrays dynamisch ausgeben? Z.B.</p>
<pre><code>aktion_mann[aktion+1]();
</code></pre>
<p>Ich weiß, dass dieser Syntax falsch ist, aber gibt es so eine Möglichkeit?<br />
Oder bin ich nur wieder zu blöd um mal ein bisschen um die Ecke zu denken? <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>
<p>Danke im Voraus<br />
DerNoob</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316707/funktion-mit-dynamischem-namen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 17:15:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316707.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 May 2013 18:22:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 18:22:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin noch blutiger Anfänger in C++, deswegen Bitte nicht bei dämlichen Fragen schimpfen <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>
<p>Hier mal ein Codeschnipsel:</p>
<pre><code>cout &lt;&lt; &quot;Mit wem soll agiert werden (1-3)&quot;;
	cin &gt;&gt; aktion;
</code></pre>
<p>Nun soll je nach Auswahl eine Funktion aufgerufen werden.</p>
<p>Die einfachste Methode wäre nun:</p>
<pre><code>switch(aktion)
	{
	case 1:
		{
			aktion_mann1();
		} break;

	case 2:
		{
			aktion_mann2();
		} break;

	case 3:
		{
			aktion_mann3();
		} break;
	}
</code></pre>
<p>Nun habe ich aber mehr als 3 Möglichkeiten, was sich natürlich negativ auf die Übersicht des Scripts auswiirkt.</p>
<p>Kann ich nun (wenn's geht, relativ unkompliziert) eine Funktion ähnlich wie Arrays mit einem dynamischen Namen schreiben,<br />
z.B.</p>
<pre><code>void aktion_mann[1]();
void aktion_mann[2]();
void aktion_mann[3]();
</code></pre>
<p>Und diese dann auch ähnlich wie Arrays dynamisch ausgeben? Z.B.</p>
<pre><code>aktion_mann[aktion+1]();
</code></pre>
<p>Ich weiß, dass dieser Syntax falsch ist, aber gibt es so eine Möglichkeit?<br />
Oder bin ich nur wieder zu blöd um mal ein bisschen um die Ecke zu denken? <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>
<p>Danke im Voraus<br />
DerNoob</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323054</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 18:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 18:26:43 GMT]]></title><description><![CDATA[<p>Du warst gar nicht mal so falsch mit deiner Syntax.</p>
<pre><code class="language-cpp">void aktion_mann1(){}
void aktion_mann2(){}
void aktion_mann3(){}

int main()
{
  typedef void (*aktion_funktionspointer)();
  aktion_funktionspointer aktion[] = {
    aktion_mann1,
    aktion_mann2,
    aktion_mann3,
  };

  // hier die Aktionen aufrufen:
  aktion[0]();
  aktion[1]();
  aktion[2](); // anstatt 2 kann auch &quot;i&quot; oder so stehen
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2323055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323055</guid><dc:creator><![CDATA[thomasmann]]></dc:creator><pubDate>Mon, 13 May 2013 18:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 18:41:41 GMT]]></title><description><![CDATA[<p>Oder sowas:</p>
<pre><code>#include &lt;functional&gt;
#include &lt;initializer_list&gt;
#include &lt;map&gt;
#include &lt;string&gt;
using namespace std;

void hau(unsigned wer) {}
void lauf(unsigned wer) {}
void spring(unsigned wer) {}

int main()
{
	map&lt;string, function&lt;void(unsigned)&gt; &gt; aktionen =
	{
		{&quot;hau&quot;,hau},
		{&quot;lauf&quot;,lauf},
		{&quot;spring&quot;,spring}
	};

	aktionen[&quot;lauf&quot;](1);
}
</code></pre>
<p>Vielleicht aber auch Polymorphie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323057</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 13 May 2013 18:41:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 18:44:55 GMT]]></title><description><![CDATA[<p>@thomasmann</p>
<p>Wenn ich das übernehme wird beim Aufruf der Funktion (In deinem Beispiel Zeile 15)<br />
die 0 unterstrichen mit dem Fehler: Der Ausdruck muss den Typ &quot;pointer to object&quot; aufweisen!</p>
<p>Was habe ich falsch gemacht?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323060</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 18:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:07:27 GMT]]></title><description><![CDATA[<p>Heißt übernehmen Copy&amp;Paste?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323065</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 13 May 2013 19:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:14:28 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Heißt übernehmen Copy&amp;Paste?</p>
</blockquote>
<p>Den komplizierten Teil, ja...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323066</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 19:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:16:37 GMT]]></title><description><![CDATA[<p>DerNoob schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Heißt übernehmen Copy&amp;Paste?</p>
</blockquote>
<p>Den komplizierten Teil, ja...</p>
</blockquote>
<p>Seh da keinen Fehler in dem Coude.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323068</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 13 May 2013 19:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Thu, 12 Jun 2014 01:20:37 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323069</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 01:20:37 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:20:00 GMT]]></title><description><![CDATA[<p>Kann es sein dass du statt mit freien Funktionen mit Memberfunktionen arbeitest? (Da die Fehlermeldung auf einen pointer to object hinweist)<br />
Dann musst du dementsprechend statt normalen Funktionspointern Memberfunktionspointer nutzen</p>
<pre><code>typedef void (KlassenName::*aktion_funktionspointer)(); // funktion_funktionspointer
                          // ist hier ein Memberpointer auf eine Memberfunktion der Klasse Klassenname
                          //die keine Parameter verlangt und void zurückgibt
aktion_funktionspointer aktion[] = {
    &amp;KlassenName::aktion_mann1,
    &amp;KlassenName::aktion_mann2,
    &amp;KlassenName::aktion_mann3,
  }; // Array aus drei Memberpointern, initialisiert mit Funktionsnamen

(klassenObjekt.*aktion[0])();
(klassenObjekt.*aktion[1])();
(klassenObjekt.*aktion[2])();
</code></pre>
<p>Ich kann mir jedenfalls vorstellen dass ein Neuling den Unterschied Funktionspointer-Memberfunktionspointer nicht kennt</p>
<p>Es ist sonst aber auch wichtig zu verstehen, wie man Memberfunktionspointer und Funktionspointer deklariert, notfalls sollte man das eingehend nachlesen. Selbst das Internet via Suchmaschine sollte hier genug sein, gesunder Menschenverstand vorausgesetzt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323070</guid><dc:creator><![CDATA[Cachus]]></dc:creator><pubDate>Mon, 13 May 2013 19:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:43:15 GMT]]></title><description><![CDATA[<p>Ich habe die Funktionen außerhalb der main() deklariert &amp; definiert, hier mal der gesamte Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;functional&gt; 
#include &lt;initializer_list&gt; 
#include &lt;map&gt; 
#include &lt;string&gt;

using namespace std;

void aktion_mann1(){cout &lt;&lt; &quot;Mann 1...&quot;;}
void aktion_mann2(){cout &lt;&lt; &quot;Mann 1...&quot;;}
void aktion_mann3(){cout &lt;&lt; &quot;Mann 1...&quot;;}

int main()
{
	int aktion;

	cout &lt;&lt; &quot;1 bis 3? &quot;;
	cin &gt;&gt; aktion;

  typedef void (*aktion_funktionspointer)(); 
  aktion_funktionspointer aktion[] = { 
    aktion_mann1, 
    aktion_mann2, 
    aktion_mann3, 
  }; 

  // hier die Aktionen aufrufen: 
  aktion[0](); 
  aktion[1](); 
  aktion[2](); // anstatt 2 kann auch &quot;i&quot; oder so stehen 

  cout &lt;&lt; &quot;\n\n\n&quot;;
  system(&quot;pause&quot;);
}
</code></pre>
<p>0, 1, 2 wird bei mir immer noch unterstrichen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323071</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 19:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:47:24 GMT]]></title><description><![CDATA[<p>Weil action ein int ist.<br />
Haste da keinen Fehler drüber gekriegt?<br />
Nenn das Feld um in actions.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323072</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 13 May 2013 19:47:24 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 19:48:03 GMT]]></title><description><![CDATA[<p>DerNoob schrieb:</p>
<blockquote>
<pre><code>int aktion;
  aktion[0](); 
  aktion[1](); 
  aktion[2](); // anstatt 2 kann auch &quot;i&quot; oder so stehen
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2323073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323073</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 13 May 2013 19:48:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 20:04:31 GMT]]></title><description><![CDATA[<p>Oh, da hätte selbst ich draufkommen können <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>
<p>Wenn ich das Spiel, um was es geht<br />
[Ironie on] mal veröffentlichen werde [Ironie off], seid ihr die Zweiten in den Credits, versprochen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2323079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323079</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 20:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Thu, 12 Jun 2014 01:20:41 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323086</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Thu, 12 Jun 2014 01:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 20:20:52 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>DerNoob schrieb:</p>
<blockquote>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Mit wem soll // ...
</code></pre>
</blockquote>
<p>also immer noch:</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>DerNoob schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Ich glaube eher, du willst ein Array oder einen Vektor von Männern haben ...<br />
Lies mal Sone's Signatur ...</p>
</blockquote>
</blockquote>
<p>Ich bin Anfänger und habe keinen Plan, was Vektoren sind <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>
<p>Vielleicht schau ich mir's morgen mal an...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323091</guid><dc:creator><![CDATA[DerNoob]]></dc:creator><pubDate>Mon, 13 May 2013 20:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 20:26:59 GMT]]></title><description><![CDATA[<p>thomasmann schrieb:</p>
<blockquote>
<pre><code class="language-cpp">typedef void (*aktion_funktionspointer)();
  aktion_funktionspointer aktion[] = {
    aktion_mann1,
    aktion_mann2,
    aktion_mann3,
  };
</code></pre>
</blockquote>
<p>Ich würde auch bei normalen Funktionszeigern den Adressoperator hinschreiben, wegen der Klarheit und Einheitlichkeit mit Memberfunktionszeigern. Keine Ahnung, warum man es in C dazumals für sinnvoll hielt, &amp; weglassen zu können...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323102</guid><dc:creator><![CDATA[Klaubi]]></dc:creator><pubDate>Mon, 13 May 2013 20:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion mit dynamischem Namen? on Mon, 13 May 2013 20:35:48 GMT]]></title><description><![CDATA[<p>Klaubi schrieb:</p>
<blockquote>
<p>Ich würde auch bei normalen Funktionszeigern den Adressoperator hinschreiben, wegen der Klarheit und Einheitlichkeit mit Memberfunktionszeigern.</p>
</blockquote>
<p>Ich würde sie weglassen. Aus dem gleichen Grund.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323106</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 13 May 2013 20:35:48 GMT</pubDate></item></channel></rss>