<?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[Wie mit vielen Funktionparametern umgehen?]]></title><description><![CDATA[<p>Hallo,<br />
in meinem momentanen Projekt habe ich eine Funktion, welche momentan ca. 15 Funktionsparameter braucht, es aber auch mehr werden können. Nun will aber eine ewig lange Parameterliste vermeiden, und habe mir gedacht, ich könnte ein struct machen, in wessen Konstruktor ich die Funktionsparameter reinschreibe.</p>
<pre><code class="language-cpp">struct MyData {
	MyData(int a, int b) : a(a), b(b) {};
	int a, b;
};

void MyFunction(MyData data) {
	// ....
}

// Funktion aufrufen
MyFunction(MyData(0,0));
</code></pre>
<p>Nun spuckt der Compiler aber folgende Warnung aus:</p>
<pre><code>warning C4238: Nicht dem Standard entsprechende Erweiterung: R-Wert einer Klasse als L-Wert verwendet
</code></pre>
<p>Ist es das struct vorher zu erstellen die einzige Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284716/wie-mit-vielen-funktionparametern-umgehen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 20:13:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284716.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Apr 2011 17:13:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:34:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
in meinem momentanen Projekt habe ich eine Funktion, welche momentan ca. 15 Funktionsparameter braucht, es aber auch mehr werden können. Nun will aber eine ewig lange Parameterliste vermeiden, und habe mir gedacht, ich könnte ein struct machen, in wessen Konstruktor ich die Funktionsparameter reinschreibe.</p>
<pre><code class="language-cpp">struct MyData {
	MyData(int a, int b) : a(a), b(b) {};
	int a, b;
};

void MyFunction(MyData data) {
	// ....
}

// Funktion aufrufen
MyFunction(MyData(0,0));
</code></pre>
<p>Nun spuckt der Compiler aber folgende Warnung aus:</p>
<pre><code>warning C4238: Nicht dem Standard entsprechende Erweiterung: R-Wert einer Klasse als L-Wert verwendet
</code></pre>
<p>Ist es das struct vorher zu erstellen die einzige Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045598</guid><dc:creator><![CDATA[Pikkolini]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:18:15 GMT]]></title><description><![CDATA[<p>Ich sehe keinen Fehler, mein Compiler nimmt das btw. In C++ ist struct auch nur eine public class.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045600</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:18:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:27:11 GMT]]></title><description><![CDATA[<p>Pikkolini schrieb:</p>
<blockquote>
<p>Hallo,<br />
in meinem momentanen Projekt habe ich eine Funktion, welche momentan ca. 15 Funktionsparameter braucht, es aber auch mehr werden können. Nun will aber eine ewig lange Parameterliste vermeiden, und habe mir gedacht, ich könnte ein struct machen, in wessen Konstruktor ich die Funktionsparameter reinschreibe.</p>
</blockquote>
<p>Und welchen Sinn sollte das haben? Du verlagerst nur die &quot;ewig lange Parameterliste&quot; von deiner Funktion in den Konstruktor von MyData, außerdem mußt du die Werte öfter hin und her kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045604</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:29:41 GMT]]></title><description><![CDATA[<p>HighLigerBiMBam schrieb:</p>
<blockquote>
<p>Ich sehe keinen Fehler, mein Compiler nimmt das btw. In C++ ist struct auch nur eine public class.</p>
</blockquote>
<p>Kompilieren und Funktionieren tuts ja, jedoch spuckt der Compiler immer eine Warnung aus, was mich daran zweifeln lässt.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Und welchen Sinn sollte das haben?</p>
</blockquote>
<p>Der Code wird übersichtlicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045606</guid><dc:creator><![CDATA[Pikkolini]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:29:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:31:56 GMT]]></title><description><![CDATA[<p>Eventuell liegt das an:</p>
<pre><code class="language-cpp">b(a)
</code></pre>
<p>weil int b nicht verwendet wird, oder daran , dass data in der Funktion nicht verwendet wird. /Wall wirft dir halt alles als Warnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045607</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:34:23 GMT]]></title><description><![CDATA[<p>Also ich halte das bei sehr viele Parametern für eine sinnvolle Lösung, man kann das Parameterstruct ja als Referenz übergeben, dann entfällt das kopieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045609</guid><dc:creator><![CDATA[RedPuma]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:33:41 GMT]]></title><description><![CDATA[<p>HighLigerBiMBam schrieb:</p>
<blockquote>
<p>Eventuell liegt das an:</p>
<pre><code class="language-cpp">b(a)
</code></pre>
<p>weil int b nicht verwendet wird, oder daran , dass data in der Funktion nicht verwendet wird. /Wall wirft dir halt alles als Warnung.</p>
</blockquote>
<p>Das b(a) ist nur ein Tippfehler, war ja nur ein Minimalbeispiel.<br />
Und als Warnungsstufe habe ich nur /4 drin, da bei /Wall auch ein haufen Warnungen wegen der WinAPI und der STL Header fliegen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045610</guid><dc:creator><![CDATA[Pikkolini]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:33:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:35:00 GMT]]></title><description><![CDATA[<p>Ein vernünftig strukturiertes Interface macht schon aus organisatorischen Gründen eine Menge Sinn. Ganz konkret gibt es außerdem bei manchen Compilern Probleme mit überlangen Parameterlisten - beispielsweise frisst std::tr1::bind in MSVC 2008 höchstens zehn Parameter.</p>
<p>Ansonsten sollte der Code, so wie er da steht, funktionieren. Hast du vielleicht ein &amp; unterschlagen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045611</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 17:42:23 GMT]]></title><description><![CDATA[<p>Pikkolini schrieb:</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Und welchen Sinn sollte das haben?</p>
</blockquote>
<p>Der Code wird übersichtlicher.</p>
</blockquote>
<p>Also ich finde, daß</p>
<pre><code class="language-cpp">MyFunction(47,11);
</code></pre>
<p>übersichtlicher aussieht als</p>
<pre><code class="language-cpp">MyFunction(MyData(47,11));
</code></pre>
<p>. Aber das könnte man natürlich als Ansichtssache betrachten.</p>
<p>(nur am Rande: Über wieviele PArameter am Stück reden wir hier eigentlich?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045616</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 06 Apr 2011 17:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 18:28:59 GMT]]></title><description><![CDATA[<p>Warum nicht:</p>
<pre><code class="language-cpp">MyData data;
data.myblub = 1;
data.bla = 2;
data.test = &quot;hallo&quot;;

MyClass(data);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045644</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 06 Apr 2011 18:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Wed, 06 Apr 2011 18:53:33 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(nur am Rande: Über wieviele PArameter am Stück reden wir hier eigentlich?)</p>
</blockquote>
<p>Wie im Anfangspost beschrieben 15+</p>
<p>theliquidwave schrieb:</p>
<blockquote>
<p>Warum nicht:</p>
<pre><code class="language-cpp">MyData data;
data.myblub = 1;
data.bla = 2;
data.test = &quot;hallo&quot;;

MyClass(data);
</code></pre>
</blockquote>
<p>Mach das mal mit 15+ Parametern für zehn Funktionsaufrufe...</p>
<p>Die Warnung tritt jedoch nur auf, wenn ich etwas dereferenziere, und da mit Referenzen das kopieren auch erspart wird, lasse ich es jetzt einfach so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045655</guid><dc:creator><![CDATA[Pikkolini]]></dc:creator><pubDate>Wed, 06 Apr 2011 18:53:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Thu, 07 Apr 2011 08:09:34 GMT]]></title><description><![CDATA[<p>Normalerweise hat man auch nicht 15 völlig unabhängige Variablen, sondern die Variablen sind in einem bestimmten Bezug zueinander, werden gemeinsam erzeugt, verändert etc. Dann kann man sie auch gemeinsam in ein struct packen. Funktionen mit mehr als 3 Argumenten kann man meistens übersichtlicher gestalten, mehr als ~5 sollten eigentlich nie nötig sein. (Und dabei gehts nicht darum die Argumentzahl nur künstlich zu verringern)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045828</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 07 Apr 2011 08:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to Wie mit vielen Funktionparametern umgehen? on Thu, 07 Apr 2011 08:12:02 GMT]]></title><description><![CDATA[<p>Und Außerdem kann man da mit mehreren Konstruktoren und ggf. Default-Werten sicherlich was schönes basteln <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/2045830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045830</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 07 Apr 2011 08:12:02 GMT</pubDate></item></channel></rss>