<?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[Inhalt von StringContainer als Funktionsaufruf verwenden]]></title><description><![CDATA[<p>So komisch der Titel auch klingen mag. Ich bin noch ziemlicher Anfänger im C++.<br />
Jetzt mein Problem.<br />
Ich habe eine for-schleife die jede Zeile vom Container durchgeht und der Inhalt der Zeile ist jeweils der Klassenname, welche die 2. for-schleife mit einer Funktion aufrufen soll. Das Problem ist, dass der Inhalt, also der Klassenname nicht &quot;erkannt&quot; wird.<br />
Meine Frage: ist dies möglich den Inhalt vom Container als &quot;reiner Text&quot; darzustellen, damit dieser auch als Klassenname erkannt wird?</p>
<pre><code class="language-cpp">FunktionsContainer.push_back(&quot;HorizontalVorwaerts&quot;);
	FunktionsContainer.push_back(&quot;HorizontalRueckwaerts&quot;);
	FunktionsContainer.push_back(&quot;VertikalAbwaerts&quot;);
	FunktionsContainer.push_back(&quot;VertikalAufwaerts&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAbwaertsRechts&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAufwaertsLinks&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAufwaertsRechts&quot;);

	for(int FunktionsZuweiser = 0; FunktionsZuweiser &lt; FunktionsContainer.size(); FunktionsZuweiser++)
	{
		for(int Wortlieferer = 0; Wortlieferer &lt; SuchwortContainer.size(); Wortlieferer++)
		{
			FunktionsContainer[FunktionsZuweiser].Suchfunktion(SuchwortContainer[Wortlieferer]);
		}
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/231594/inhalt-von-stringcontainer-als-funktionsaufruf-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 20:53:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231594.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Jan 2009 08:26:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 08:26:25 GMT]]></title><description><![CDATA[<p>So komisch der Titel auch klingen mag. Ich bin noch ziemlicher Anfänger im C++.<br />
Jetzt mein Problem.<br />
Ich habe eine for-schleife die jede Zeile vom Container durchgeht und der Inhalt der Zeile ist jeweils der Klassenname, welche die 2. for-schleife mit einer Funktion aufrufen soll. Das Problem ist, dass der Inhalt, also der Klassenname nicht &quot;erkannt&quot; wird.<br />
Meine Frage: ist dies möglich den Inhalt vom Container als &quot;reiner Text&quot; darzustellen, damit dieser auch als Klassenname erkannt wird?</p>
<pre><code class="language-cpp">FunktionsContainer.push_back(&quot;HorizontalVorwaerts&quot;);
	FunktionsContainer.push_back(&quot;HorizontalRueckwaerts&quot;);
	FunktionsContainer.push_back(&quot;VertikalAbwaerts&quot;);
	FunktionsContainer.push_back(&quot;VertikalAufwaerts&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAbwaertsRechts&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAufwaertsLinks&quot;);
	FunktionsContainer.push_back(&quot;DiagonalAufwaertsRechts&quot;);

	for(int FunktionsZuweiser = 0; FunktionsZuweiser &lt; FunktionsContainer.size(); FunktionsZuweiser++)
	{
		for(int Wortlieferer = 0; Wortlieferer &lt; SuchwortContainer.size(); Wortlieferer++)
		{
			FunktionsContainer[FunktionsZuweiser].Suchfunktion(SuchwortContainer[Wortlieferer]);
		}
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1644321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644321</guid><dc:creator><![CDATA[Lehrling i.A]]></dc:creator><pubDate>Tue, 13 Jan 2009 08:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 08:36:17 GMT]]></title><description><![CDATA[<p>Du willst also, mittels des Klassennamen, ein Objekt der Klasse erzeugen? Problem an der Sache, nachdem Compiliert wurde, existieren die Klassennamen überhaupt nicht mehr in dem Kontext in dem du sie geschrieben hast, soll heißen zur Laufzeit kannst du nicht auf Klassennnamen als string zugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644326</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 13 Jan 2009 08:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 08:42:24 GMT]]></title><description><![CDATA[<p>Also lediglich will ich eine Funktion von der Klasse (Vererbung) aufrufen.<br />
Vorher hatte ich für jeden Klassennamen (für alle, die im Container sind) eine for-Schleife. Jetzt wollte ich zur verschönerung des Codes eben so machen.<br />
(Vorher klappte dies, wie ich wollte) Also ich will einfach nur die Funktion aufrufen, und dazu brauche ich ja logischerweise den Kassennamen und diesen soll es vom Container nehmen, als wäre dieser normal vor der Funktion aufgeschrieben.<br />
Ist meine Frage verständlich?</p>
<p>Im Moment wie ich es jetzt habe ist folgende Meldung:<br />
error C2039: 'Suchfunktion' : Ist kein Element von 'basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;'<br />
Weil es eben den Klassennamen nicht auflöst..</p>
<p>Mfg und besten Dank für Lösungen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644328</guid><dc:creator><![CDATA[Lehrling i.A]]></dc:creator><pubDate>Tue, 13 Jan 2009 08:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Wed, 14 Jan 2009 06:23:28 GMT]]></title><description><![CDATA[<p>Ja jetzt ist es verständlich und das was du machen willst funktioniert nicht.Weil wie ich schon sagte, die Klassennamen als &quot;rein text&quot; wirst du nach dem Compiliervorgang nicht mehr kriegen.Du musst dazu Zeiger auf deine Basisklasse speichern und mit denen kannst du dann auf die Funktionen zugreifen. Oder du benutzt eine</p>
<pre><code class="language-cpp">std::map&lt;std::string/*für deinen Klassennamen*/, Basisklasse*&gt;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1644330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644330</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 14 Jan 2009 06:23:28 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 08:52:31 GMT]]></title><description><![CDATA[<p>Also wie würde das mit der Referenz gehen?<br />
Nur zum testen hätte ich das so gemacht</p>
<pre><code class="language-cpp">for(int FunktionsZuweiser = 0; FunktionsZuweiser &lt; FunktionsContainer.size(); FunktionsZuweiser++)
	{
		for(int Wortlieferer = 0; Wortlieferer &lt; SuchwortContainer.size(); Wortlieferer++)
		{
			/*FunktionsContainer[FunktionsZuweiser]*/&amp;HorizontalVorwaerts.Suchfunktion(SuchwortContainer[Wortlieferer]);
		}
	}
</code></pre>
<p>Aber es erscheint folgender Fehler:</p>
<p>error C2102: '&amp;' erwartet L-Wert</p>
<p>Wie muss ich denn das machen?<br />
Und dein 2. Vorschlag habe ich nicht kapiert :S<br />
Besten Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644333</guid><dc:creator><![CDATA[Lehrling i.A]]></dc:creator><pubDate>Tue, 13 Jan 2009 08:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 09:58:35 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::map&lt;std::string/*für deinen Klassennamen*/, ObjektDeinerKlasse&amp;&gt;;
</code></pre>
</blockquote>
<p>Das mit der Referenz geht so nicht. Man kann Referenzen nicht so ohne weiters in Container packen, da sie beim Anlegen auch gleich initialisiert werden müssen.</p>
<p>Mal so zum Verständniss:<br />
Du hast verschiedene Klassen wie z.B. HorizontalVorwaerts, HorizontalRueckwaerts und VertikalAbwaerts? Oder sind das alles Objekte von der selben Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644335</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 13 Jan 2009 09:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 08:55:03 GMT]]></title><description><![CDATA[<p>Als erstes musst du jegliche Referenzen auf Objekte deiner Klassen in deinen Container packen.Was aber nur geht, wenn du eine allgemeine Basisklasse hast, sonst müsstest du für jede Klasse einen eigenen container anlegen.Und danach kannst du durch den Container durchmarschieren wie in deiner ersten ausführung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644336</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Tue, 13 Jan 2009 08:55:03 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Tue, 13 Jan 2009 22:30:59 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Als erstes musst du jegliche Referenzen auf Objekte deiner Klassen in deinen Container packen.</p>
</blockquote>
<p>Das geht immer noch nicht. <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="😉"
    /><br />
(Ich sehe grade, dass du Tachyons Antwort wohl kaum noch gelesen hast bei der Post-Zeit).</p>
<p>Wohl aber mit Zeiger. Map ist eine gute Idee, also</p>
<pre><code class="language-cpp">std::map&lt;std::string, ObjektDeinerKlasse*&gt; Map;
</code></pre>
<p>Wie schon erwähnt wurde, musst du für Polymorphie eine Basisklasse haben. Die kann dann (rein) virtuelle Funktionen deklarieren, die in den abgeleiteten Klassen überschrieben werden. Dann kann man von den Zeigern im Container aus automatisch die richtigen Methoden aufrufen.</p>
<p>Und immer schön dran denken, Destruktor virtuell zu machen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1644957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1644957</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 13 Jan 2009 22:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Wed, 14 Jan 2009 06:20:52 GMT]]></title><description><![CDATA[<p>Verwende doch einfach Funktoren wie z.B. boost::function&lt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1645035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1645035</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 14 Jan 2009 06:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to Inhalt von StringContainer als Funktionsaufruf verwenden on Wed, 14 Jan 2009 06:22:53 GMT]]></title><description><![CDATA[<p>@ Nexus. Ahh du hast Recht, den Post habe ich nicht gelesen. Natürlich mit Zeiger, ich war wohl gerade etwas nebenan, klaro Zeiger in die Map und dann macht der Polymorphismus alles für dich, unter der Voraussetzung das er eine gemeinsame Basiklasse hat.Ich werde mein eingansgpost dahingehend ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1645036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1645036</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 14 Jan 2009 06:22:53 GMT</pubDate></item></channel></rss>