<?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[Optionale Parameter?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich braeuchte eine Funktion mit recht vielen Parametern. Die Parameter haben immer den selben Aufbau: Zunaechst kommt eine Art &quot;bool&quot; Parameter, die bestimmt ob der Parmeter gesetzt werden soll. Wenn dies der Fall ist, soll im naechsten Parameter der Wert kommen. Andernfalls soll gleich der naechste &quot;bool&quot; Parameter kommen.</p>
<p>Ein Beispiel:<br />
function(ON, 1.3f, ON, 22, OFF, OFF, ON, &quot;hallo&quot;, OFF, ON, 55.332f);</p>
<p>Sagen wir die ersten 2 Parameter sollen eine Temperatur regeln. Wenn der 1. Parameter OFF ist, dann soll die Temperatur nicht geandert werden. Ist hingegen der 1. Parameter ON, so soll im 2. Parameter die Temperatur (hier 1.3f) gesetzt werden.<br />
Mir ist klar, dass das so in C++ nicht geht. Wie koennte man das einigermassen schoen nachbauen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280264/optionale-parameter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 04:04:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280264.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Jan 2011 12:33:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:33:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich braeuchte eine Funktion mit recht vielen Parametern. Die Parameter haben immer den selben Aufbau: Zunaechst kommt eine Art &quot;bool&quot; Parameter, die bestimmt ob der Parmeter gesetzt werden soll. Wenn dies der Fall ist, soll im naechsten Parameter der Wert kommen. Andernfalls soll gleich der naechste &quot;bool&quot; Parameter kommen.</p>
<p>Ein Beispiel:<br />
function(ON, 1.3f, ON, 22, OFF, OFF, ON, &quot;hallo&quot;, OFF, ON, 55.332f);</p>
<p>Sagen wir die ersten 2 Parameter sollen eine Temperatur regeln. Wenn der 1. Parameter OFF ist, dann soll die Temperatur nicht geandert werden. Ist hingegen der 1. Parameter ON, so soll im 2. Parameter die Temperatur (hier 1.3f) gesetzt werden.<br />
Mir ist klar, dass das so in C++ nicht geht. Wie koennte man das einigermassen schoen nachbauen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005683</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:53:13 GMT]]></title><description><![CDATA[<p>&quot;Schön&quot; ist natürlich Ansichtssache. Aber Du könntest mal nach dem &quot;named parameter idiom&quot; suchen und eine ähnliche Technik anwenden.</p>
<p>In C++0x könnte man das übrigens mit variadischen Templates und &quot;Perfect Forwarding&quot; genauso machen, wie Du es haben willst. Aber der Aufwand steht wahrscheinlich in keinem Verhältnis zum Nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005687</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:40:48 GMT]]></title><description><![CDATA[<p>Bis auf die Syntax geht das schon (ob es so gutes Design ist, sei mal dahin gestellt):</p>
<pre><code>void processBunchOfParameters(bool shallSetTemperature, double temperature, bool shallSetLighting, double lighting);
</code></pre>
<p>Aufruf:</p>
<pre><code>processBunchOfParameters(false, 0.0, true, 42.0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2005688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005688</guid><dc:creator><![CDATA[gastgast]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:44:32 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Mir ist klar, dass das so in C++ nicht geht.</p>
</blockquote>
<p>Natürlich geht das. (Aber nicht hübsch. Stichwort: Ellipse)</p>
<blockquote>
<p>Wie koennte man das einigermassen schoen nachbauen?</p>
</blockquote>
<p>Willst du das wirklich? Das klingt eher nach konfusem Design. Da gibt es so unendlich viele bessere Möglichkeiten. Etwas mehr Information über das Problem würde helfen, die beste zu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005690</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:44:32 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:44:39 GMT]]></title><description><![CDATA[<p>Das &quot;named parameter idiom&quot; ist schon ganz nett. Das Problem ist nur, dass dabei die Parameter alle optional sind. Meine Parameter (ich nenne sie mal Keys) muessen ALLE gesetzt werden (ON, OFF und evtl. noch andere Werte) und nur wenn ein Key OFF ist, muss kein Wert angegeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005692</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:50:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Optionator schrieb:</p>
<blockquote>
<p>Mir ist klar, dass das so in C++ nicht geht.</p>
</blockquote>
<p>Natürlich geht das. (Aber nicht hübsch. Stichwort: Ellipse)</p>
</blockquote>
<p>Die Ellipse macht was ganz anderes.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Willst du das wirklich? Das klingt eher nach konfusem Design. Da gibt es so unendlich viele bessere Möglichkeiten. Etwas mehr Information über das Problem würde helfen, die beste zu finden.</p>
</blockquote>
<p>Na dann nen doch einfach mal 10 aus deinem unendlichen Pool. Ich will einfach eine maechtige Funktion zum Setzen verschiedener States einer Rendering Pipeline in einem SceneGraph. Und manche Parameter brauchen eben Werte (z.B. AlphaTest=0.2, wenn ich AlphaTest aber deaktiviere, brauche ich keinen Wert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005701</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 12:59:33 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Optionator schrieb:</p>
<blockquote>
<p>Mir ist klar, dass das so in C++ nicht geht.</p>
</blockquote>
<p>Natürlich geht das. (Aber nicht hübsch. Stichwort: Ellipse)</p>
</blockquote>
<p>Die Ellipse macht was ganz anderes.</p>
</blockquote>
<p>Aha, wenn du meinst <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="🙄"
    /> . Du musst es ja wissen, du bist schließlich der Fragesteller und ich nur der Antwortgeber...[/ironie]</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Willst du das wirklich? Das klingt eher nach konfusem Design. Da gibt es so unendlich viele bessere Möglichkeiten. Etwas mehr Information über das Problem würde helfen, die beste zu finden.</p>
</blockquote>
<p>Na dann nen doch einfach mal 10 aus deinem unendlichen Pool. Ich will einfach eine maechtige Funktion zum Setzen verschiedener States einer Rendering Pipeline in einem SceneGraph. Und manche Parameter brauchen eben Werte (z.B. AlphaTest=0.2, wenn ich AlphaTest aber deaktiviere, brauche ich keinen Wert)</p>
</blockquote>
<p>Das ist es ja eben: Wieso willst du eine solch mächtige Funktion? <a href="http://en.wikipedia.org/wiki/KISS_principle" rel="nofollow">KISS</a>.</p>
<p>Also:<br />
1. Einzelfunktionen<br />
2. Funktionsüberladung<br />
3. Aneinandergekettete überladene Operatoren<br />
4. Parameterobjekt<br />
5. Irgendwas cleveres mit Templates<br />
6. Ellipse</p>
<p>Ok, sind vielleicht doch nicht unendlich viele, für Mathematiker ist aber 6 schon viel größer als 1 <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="😃"
    /> . Aber 6. ist das was du beschreibst und Möglichkeiten 1.-5. sind allesamt in fast jeder Situation besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005704</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 12 Jan 2011 12:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:02:54 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Wie koennte man das einigermassen schoen nachbauen?</p>
</blockquote>
<p>Ist dir klar, dass man so ein Gebilde nur mit hartcodierten, niemals mit variablen Parametern aufrufen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005706</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:03:57 GMT]]></title><description><![CDATA[<p>Da die Parameterzahl in Wirklichkeit immer gleich zu sein scheint, Paar aus Boolean und Value, würde ich ein Parameterobjekt einführen. Dieses kann dann verschiedene Zustände haben (nicht gesetzt; int; float; string; ...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005708</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:03:57 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:22:46 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>1. Einzelfunktionen<br />
2. Funktionsüberladung<br />
3. Aneinandergekettete überladene Operatoren<br />
4. Parameterobjekt<br />
5. Irgendwas cleveres mit Templates<br />
6. Ellipse</p>
<p>Ok, sind vielleicht doch nicht unendlich viele, für Mathematiker ist aber 6 schon viel größer als 1 <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="😃"
    /> . Aber 6. ist das was du beschreibst und Möglichkeiten 1.-5. sind allesamt in fast jeder Situation besser.</p>
</blockquote>
<p>Nein, 6. ist NICHT das was ich beschreibe. Die Ellipse bedeutet nur beliebig viele Parameter beliebigen Typs. Ich habe ein klares Typmuster (key,value) und die Anzahl der Parameterpaare ist fest. Der Benutzer meiner Funktion soll sogar<br />
gezwungen sein, sich ueber jeden einzelnen Parameter Gedanken zu machen.<br />
Drum scheiden alle deine Punkte aus, ausser Punkt 4. Wie wuerde sowas mit Parameterobjekt aussehen? Die Values der Keys haben ja unterschiedliche Werte (z.B. ON, 1.3, ON, 22, OFF, OFF, OFF, ON, &quot;Hallo&quot; etc.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005718</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:37:07 GMT]]></title><description><![CDATA[<p>Du kannst das Named-Parameter Idiom noch mit Funktionsüberladung und typisierten Tag-Konstanten für on- und off kombinieren:</p>
<pre><code class="language-cpp">struct OnType{} const ON;
struct OffType{} const OFF;

class C
{
  public: 
    C() : a(-999), b('C') {}  
    C &amp; setA(OnType, int i) { a = i; return *this; }  //uses value
    C &amp; setA(OffType) { a = 0; return *this; } //uses some default

    C &amp; setB(OnType, char c) { b = c; return *this; } //uses value
    C &amp; setB(OffType) { b = ' '; return *this; } //uses some default

    static C create() {
      return C();
    }
private:
    int a;
    char b;

};
//...
C x(C::create().setA(OFF).setB(ON, 'k'));
</code></pre>
<p>Aber schön ist das nicht...<br />
Wenn alle Werte auf mal gesetzt werden müssen, musst Du wohl für alle möglichen Kombination Überladungen bereit stellen. <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/2005721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005721</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:38:33 GMT]]></title><description><![CDATA[<p>Ich hab das zwar noch nie benutzt, aber es klingt nach einem Einsatzgebiet für boost::optional.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005722</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:48:00 GMT]]></title><description><![CDATA[<p>ACK, wollte auch gerade boost::optional vorschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005724</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:48:31 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Wie wuerde sowas mit Parameterobjekt aussehen?</p>
</blockquote>
<p>Eine (Imho noch immer unschöne Variante):</p>
<pre><code class="language-cpp">// Variante mit Boost (ungetestet)
#include &lt;boost/optional.hpp&gt;
using namespace boost;

// Mit Zwang bei jeden Anzugeben...
// (Wobei ich da kein Fan von bin, und eher eine Struktur/Klasse mit den
// optionalen Parametern deklarieren würde...)
void foo(
  optional&lt;bool&gt; parameter1,
  optional&lt;int&gt; parameter2)
{
    // Wenn Parameter1 mit einem entsprechenden Wert gesetzt ist...
    if(parameter1.is_initialized())
        // ... TuEtwasMit(parameter1.get())
    // ...
}

int main()
{
    foo(optional&lt;bool&gt;(), 1);
}
</code></pre>
<p>Man kann sich natürlich boost::optional oder vergleichbares selbst bauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005725</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:54:04 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Nein, 6. ist NICHT das was ich beschreibe. Die Ellipse bedeutet nur beliebig viele Parameter beliebigen Typs. Ich habe ein klares Typmuster <strong>(key,value)</strong> und die <strong>Anzahl der Parameterpaare ist fest</strong>. Der Benutzer meiner Funktion soll sogar<br />
gezwungen sein, sich ueber jeden einzelnen Parameter Gedanken zu machen.<br />
Drum scheiden alle deine Punkte aus, ausser Punkt 4. Wie wuerde sowas mit Parameterobjekt aussehen? Die Values der Keys haben ja unterschiedliche Werte (z.B. ON, 1.3, ON, 22, OFF, OFF, OFF, ON, &quot;Hallo&quot; etc.)</p>
</blockquote>
<p>std::pair&lt;bool, T&gt; ?</p>
<pre><code class="language-cpp">void foo(std::pair&lt;bool, float&gt;, std::pair&lt;bool, int&gt;, std::pair&lt;bool, std::string&gt;, ....)
</code></pre>
<p>oder verstehe ich was falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005730</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 13:54:16 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Nein, 6. ist NICHT das was ich beschreibe.</p>
</blockquote>
<p>Man kann es aber damit machen. Und ich sage ja selbst, dass das nicht hübsch ist. Nachteil ist nämlich, dass Fehler erst zur Laufzeit bemerkt werden.</p>
<blockquote>
<p>Der Benutzer meiner Funktion soll sogar<br />
gezwungen sein, sich ueber jeden einzelnen Parameter Gedanken zu machen.<br />
Drum scheiden alle deine Punkte aus, ausser Punkt 4.</p>
</blockquote>
<p>Wenn du meinst <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="🙄"
    /> . Ich finde deine Begründung nicht einsichtig (anders gesagt: Sie ist keine und ich glaube du stellst dich bloß stur) und schlage dir vor, dies noch einmal abzuwägen. Aber wenn es unbedingt 4 sein muss, hier ein Vorschlag, ist nur auf die Schnelle und daher noch verbesserungsfähig:</p>
<pre><code class="language-cpp">class temperature
{
 double data;
 bool valid;
public:
 temperature(): valid(false){}
 temperature(double data): data(data), valid(true){}
 bool is_valid(){return valid;}
};

class lighting
{
 double data;
 bool valid;
public:
 lighting(): valid(false){}
 lighting(double data): data(data), valid(true){}
 bool is_valid(){return valid;}
};

// ...

void set_parameters(temparature t, lighting l)
{
 if (t.is_valid())
  {
    // Setze Temperatur
  }
 if (l.is_valid())
  {
    // Setze Beleuchtung
  }
}

// ...

// Beides:
set_parameters(temperature(5.0), lighting(1.0));
// Nur Temperatur:
set_parameters(temperature(5.0), lighting());
</code></pre>
<p>Alternativ auch ein globales Objekt no_temperature und dafür den Defaultkonstruktor rausnehmen, wenn dir die Syntax besser gefällt:</p>
<pre><code class="language-cpp">set_parameters(no_temperature, lighting(5.0));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2005731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005731</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 12 Jan 2011 13:54:16 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 14:30:58 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Nein, 6. ist NICHT das was ich beschreibe.</p>
</blockquote>
<p>Man kann es aber damit machen. Und ich sage ja selbst, dass das nicht hübsch ist.<br />
[/quote]<br />
Nein, eben nicht. Man kann NICHT damit das machen, was ich will. Ich will, dass der Benutzer alle Parameter (die alle einen FESTEN TYPEN haben) der Funktion durchgeht und sich fuer jeden einzelnen ueberlegt, ob er ihn setzen will oder nicht. Bei einer Ellipse sieht er nicht mal Typen und kann 3 Billionen Parameter irgend eines Typs uebergeben. Aber ICH bin stur, ne? <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7573">@BigNeal</a>: Das Problem mit den pairs ist, dass der 2. Parameter des pairs eben nicht optional ist (den brauch ich ja nicht, wenn der 1. Wert false ist).</p>
<p>Werd mir mal boost::optional anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005747</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 14:30:58 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 14:49:12 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Ich will, dass der Benutzer alle Parameter (die alle einen FESTEN TYPEN haben) der Funktion durchgeht und sich fuer jeden einzelnen ueberlegt, ob er ihn setzen will oder nicht.</p>
</blockquote>
<p>Du solltest aber dennoch abwägen ob dies nicht übertrieben ist (Ich würde solche Schnittstellen jedenfalls nicht benutzen wollen, zumal sie imho weder lesbar noch sinnvoll zu warten sind). Ich glaube sogar das du den gegenteiligen Effekt (Thema Reizüberflutung) erreichen wirst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005757</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 12 Jan 2011 14:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 14:55:04 GMT]]></title><description><![CDATA[<p>du sagst doch selber man soll sich gedanken machen müssen</p>
<blockquote>
<p>function(ON, 1.3f, ON, 22, OFF, OFF, ON, &quot;hallo&quot;, OFF, ON, 55.332f);</p>
</blockquote>
<pre><code class="language-cpp">foo(make_pair(true,1.3f),   // &lt;-- hier muss ich mir gedanken machen was ich übergeben will
    make_pair(true, 22),   // hier auch
    make_pair(false, 0),   // hier muss ich überlegen, dass ich nichts übergeben will, also kann man auch noch eine &quot;0&quot; schreiben.
    make_pair(false, &quot;&quot;),
    make_pair(true, &quot;hallo&quot;),
    make_pair(false, 0),
    make_pair(true, 55.332f));
</code></pre>
<p>ich sehe das problem so nicht ganz<br />
und sonst schreib eine funktion wie make_pair mit einem default wert für second</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005761</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Wed, 12 Jan 2011 14:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 14:55:51 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Ich will, dass der Benutzer alle Parameter (die alle einen FESTEN TYPEN haben) der Funktion durchgeht und sich fuer jeden einzelnen ueberlegt, ob er ihn setzen will oder nicht.</p>
</blockquote>
<p>Wenn jemand ernsthaft dazu gezwungen ist, mit diesem API zu arbeiten (und denjenigen bedaure ich jetzt schon), wirst du damit rechnen müssen, dass er sich einen flexibleren und benutzerfreundlicheren Wrapper drumherum bastelt. Ich jedenfalls würde das tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005762</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 12 Jan 2011 14:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 14:59:23 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Bei einer Ellipse sieht er nicht mal Typen und kann 3 Billionen Parameter irgend eines Typs uebergeben. Aber ICH bin stur, ne? <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>
</blockquote>
<p>Gerade bei einer Ellipse muss er sich doch Gedanken machen, eben WEIL so viel schiefgehen kann. Da in der Schnittstelle selbst keine Hilfestellung zu finden ist, muss schließlich genau dokumentiert sein, welche Parameter in welcher Reihenfolge kommen und man muss ständig die Anleitung daneben liegen haben.</p>
<p>Wobei ich es genau deshalb eben nicht nehmen würde. Aber ich verstehe einfach nicht, wie du nicht sehen kannst, dass dies genau das ist was du beschreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005764</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 12 Jan 2011 14:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 15:01:20 GMT]]></title><description><![CDATA[<p>Mit dieser &quot;API&quot; arbeiten wir intern und wir wollen das so. Das brauch ich jetzt nicht gross erlaeutern, da ihr den kompletten Kontext sowieso nicht kennt.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7573">@BigNeal</a>: Das &quot;Problem&quot; ist doch offensichtlich. Ein foo(ON, 2, OFF, OFF, OFF, ON. 33.3f) waere deutlich schoener als ein foo(ON, 2, OFF, &quot;&quot;, OFF, 0.0f, OFF, 0, ON, 33.3f);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005766</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 15:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 15:07:43 GMT]]></title><description><![CDATA[<p>Wenn ich sowas vorgesetzt bekomme, dann sind die einzigen Gedanken die ich mir mache, dort überall no rein zu schreiben, um das Standardverhalten zu bekommen, welches ich auch ohne unnötige Parameter erwarten würde. Wenn mir das Standardverhalten nicht zusagt, muss ich auf jeden Fall in die Doku schauen und die interessanten Parameter raus suchen und entsprechend setzten. Auch hier stört mich das ewige no, no, no eher, als das es etwas bringen würde. Kurzum entweder ich will einen Parameter verändern, dann mache ich dass selbstständig oder nicht, dann interessiert mich auch nicht die Liste. Wenn die Parameter zur Ausführung notwendig sind, dann kannst du das auch vorher abtesten, ob alle gesetzt wurden. Den Anwender aber zu zwingen sich mit Optionen auseinander zu setzten, die ihn gar nicht interessieren, macht keinen Sinn.<br />
Übrigens ist die Variante nicht nur nervig, sondern auch extrem Fehleranfällig. Weil du Parameter gleichen Typs leicht an die falsche Stelle schreiben kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005771</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Wed, 12 Jan 2011 15:07:43 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 15:18:55 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Mit dieser &quot;API&quot; arbeiten wir intern und wir wollen das so.</p>
</blockquote>
<p>Was macht ihr denn, wenn man erst zur Laufzeit weiß, ob man einen Parameter setzen will? Ist man dann zu einem</p>
<pre><code>if(willsetzen)
   aufruf
else
   aufruf_mit_anderer_signatur_weil_1_parameter_weniger
</code></pre>
<p>gezwungen? Oder ist das nur für den interaktiven Einsatz gedacht?</p>
<p>Optionator schrieb:</p>
<blockquote>
<p>Ein foo(ON, 2, OFF, OFF, OFF, ON. 33.3f) waere deutlich schoener als ein foo(ON, 2, OFF, &quot;&quot;, OFF, 0.0f, OFF, 0, ON, 33.3f);</p>
</blockquote>
<p>Wenn du das wirklich schön findest, dann mach es doch einfach mit Überladung. Du brauchst dann eben 2^n Überladungen für n Parameter. Aber eine fiese Schnittstelle sollte auch fies zu inplementieren sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005775</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 12 Jan 2011 15:18:55 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 15:21:21 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Wenn ich sowas vorgesetzt bekomme, dann sind die einzigen Gedanken die ich mir mache, dort überall no rein zu schreiben, um das Standardverhalten zu bekommen, welches ich auch ohne unnötige Parameter erwarten würde. Wenn mir das Standardverhalten nicht zusagt, muss ich auf jeden Fall in die Doku schauen und die interessanten Parameter raus suchen und entsprechend setzten. Auch hier stört mich das ewige no, no, no eher, als das es etwas bringen würde. Kurzum entweder ich will einen Parameter verändern, dann mache ich dass selbstständig oder nicht, dann interessiert mich auch nicht die Liste. Wenn die Parameter zur Ausführung notwendig sind, dann kannst du das auch vorher abtesten, ob alle gesetzt wurden. Den Anwender aber zu zwingen sich mit Optionen auseinander zu setzten, die ihn gar nicht interessieren, macht keinen Sinn.<br />
Übrigens ist die Variante nicht nur nervig, sondern auch extrem Fehleranfällig. Weil du Parameter gleichen Typs leicht an die falsche Stelle schreiben kannst.</p>
</blockquote>
<p>Es ist genau das Gegenteil der Fall. Im Moment haben wir staendig Fehler, weil sich Entwickler zu wenig Gedanken ueber Pipeline States machen. Drum haben wir uns entschiedene eine OPTIONALE Hilfsfunktion anzubieten, mit der man die wichtigsten States setzen kann. Dies dient nur dazu die ewig auftretenden Fluechtigkeitsfehler zu vermeiden, im dem sich jeder Entwickler genau ueberlegt, welchen Zustand bestimmte wichtige States haben sollen.</p>
<p>Is mir schon oft in diesem Forum aufgefallen, dass immer gleich ein paar Superkluge (so sehen sie sich zumindest selber) daherkommen und meinen sie muessten einen belehren und sagen was gut ist und nicht. Obwohl sie meistens keinerlei Ahnung von den eigentlichen Gruenden haben. Es gibt nicht nur ON und OFF etc. In Wirklichkeit ist es deutlich komplexer, aber ich habe es eben auf den KERN des Problems vereinfacht. Spart euch in Zukunft vielleicht mal die Metatipps und ewigen Belehrungen und versucht einfach nur die FRAGE an sich zu beantworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005777</guid><dc:creator><![CDATA[Optionator]]></dc:creator><pubDate>Wed, 12 Jan 2011 15:21:21 GMT</pubDate></item><item><title><![CDATA[Reply to Optionale Parameter? on Wed, 12 Jan 2011 15:42:18 GMT]]></title><description><![CDATA[<p>Optionator schrieb:</p>
<blockquote>
<p>Is mir schon oft in diesem Forum aufgefallen, dass immer gleich ein paar Superkluge (so sehen sie sich zumindest selber) daherkommen und meinen sie muessten einen belehren und sagen was gut ist und nicht. Obwohl sie meistens keinerlei Ahnung von den eigentlichen Gruenden haben. Es gibt nicht nur ON und OFF etc. In Wirklichkeit ist es deutlich komplexer, aber ich habe es eben auf den KERN des Problems vereinfacht. Spart euch in Zukunft vielleicht mal die Metatipps und ewigen Belehrungen und versucht einfach nur die FRAGE an sich zu beantworten.</p>
</blockquote>
<p>Lieber nicht. Es ist mir schon oft in diesem Forum aufgefallen, dass immer jemand nach einer ganz genauen Lösung sucht die Sie für die einzig mögliche halten. Obwohl sie meistens keinerlei Ahnung von den verfügbaren Sprachmitteln haben. Die wenigen Fälle, die tatsächlich mal genau diese eine Lösung suchen, können auch mit ein paar Metatipps leben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2005788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2005788</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 12 Jan 2011 15:42:18 GMT</pubDate></item></channel></rss>