<?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[Funktionen mit Default-Argumenten als Deklaration]]></title><description><![CDATA[<p>hi,</p>
<p>ich möchte hier nur sicherstellen ob ich so alles richtig verstanden habe und dass man an diese Regeln halten sollte:</p>
<p>es gibt einmal diese Funktion mit Default-Wert</p>
<pre><code class="language-cpp">void dummy(int i = 0) {};
</code></pre>
<p>diese funktion möchte ich jetzt in headerdatei, also deklariere ich sie dort</p>
<pre><code class="language-cpp">void dummy(int i = 0);
</code></pre>
<p>und in cpp-datei</p>
<pre><code class="language-cpp">void dummy(int i) {};
</code></pre>
<p>das funktionierte alles</p>
<p>d.h. die default-werte dürfen nur in der deklaration stehen ?<br />
ich habe in cpp-datei auch nochmal diese default-werte geschrieben. praktisch doppelt. dann kam ein fehler. warum eigentlich ?</p>
<p>dann habe ich ein weiteres experiment gemacht:<br />
default-wert nur in cpp. in der deklaration nur void dummy(int i);<br />
dann geht es zwar auch aber dann muss in main() das argument angegeben werden.<br />
macht also default-wert in cpp keinen sinn oder?</p>
<p>die regel heisst also letzten endes: default-werte nur in der deklaration schreiben!<br />
so richtig verstanden alles?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202973/funktionen-mit-default-argumenten-als-deklaration</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 08:04:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202973.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Jan 2008 13:30:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 13:30:34 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich möchte hier nur sicherstellen ob ich so alles richtig verstanden habe und dass man an diese Regeln halten sollte:</p>
<p>es gibt einmal diese Funktion mit Default-Wert</p>
<pre><code class="language-cpp">void dummy(int i = 0) {};
</code></pre>
<p>diese funktion möchte ich jetzt in headerdatei, also deklariere ich sie dort</p>
<pre><code class="language-cpp">void dummy(int i = 0);
</code></pre>
<p>und in cpp-datei</p>
<pre><code class="language-cpp">void dummy(int i) {};
</code></pre>
<p>das funktionierte alles</p>
<p>d.h. die default-werte dürfen nur in der deklaration stehen ?<br />
ich habe in cpp-datei auch nochmal diese default-werte geschrieben. praktisch doppelt. dann kam ein fehler. warum eigentlich ?</p>
<p>dann habe ich ein weiteres experiment gemacht:<br />
default-wert nur in cpp. in der deklaration nur void dummy(int i);<br />
dann geht es zwar auch aber dann muss in main() das argument angegeben werden.<br />
macht also default-wert in cpp keinen sinn oder?</p>
<p>die regel heisst also letzten endes: default-werte nur in der deklaration schreiben!<br />
so richtig verstanden alles?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438375</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Thu, 17 Jan 2008 13:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 13:36:02 GMT]]></title><description><![CDATA[<p>Du darfst für jeden Parameter nur einen Default-Wert angeben (und selbst wenn die angegebenen Werte textuell identisch sind, gibt's Probleme mit einer mehrfachen Definition (?)). Wo du das machst, ist theoretisch egal.</p>
<p>Aber: Der Compiler kann nur die Deklarationen nutzen, die er in der aktuellen Übersetzungseinheit gesehen hat - wenn der Default schon im Header stand, kennt er ihn und kann ihn nutzen; wenn der Default nur im Sourcefile steht, kennt er ihn in einer anderen Übersetzungseinheit <strong>nicht</strong>. (Sinn könnte letzteres durchaus machen - aber atm fällt mir da kein Anwendungsbeispiel ein)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438385</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 13:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 15:26:18 GMT]]></title><description><![CDATA[<p>okay danke</p>
<p>noch ein paar Fragen:</p>
<p>ich habe im Header eine Deklaration:</p>
<p>SDL_Surface *load_image( std::string const&amp; filename );</p>
<p>allerdings funktioniert die erst dann, wenn ich im Header string inkludiert habe.</p>
<pre><code class="language-cpp">#include &lt;string&gt;
</code></pre>
<p>bei SDL_Surface ist das nicht notwendig. Es funktioniert auch ohne</p>
<pre><code class="language-cpp">#include &quot;SDL/SDL.h&quot;
#include &quot;SDL/SDL_image.h&quot;
</code></pre>
<p>Die habe ich im Sourcefile geschrieben. Das gleiche wollte ich mit string machen, aber es geht nicht. Warum?</p>
<p>Sollten diese Includes nicht normalerweise nur im Sourcefile stehen, um Kollisionen zu vermeiden?<br />
Oder gilte das eher nur für die using namespace? Ich kann mich da recht nicht mehr erinnern...</p>
<p>Warum braucht man bei SDL überhaupt keine using namespaces? Weil das so festgelegt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438491</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Thu, 17 Jan 2008 15:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 15:32:44 GMT]]></title><description><![CDATA[<p>Die Header (gerade der Standardbibliothek) sind schon so aufgebaut, daß sie nicht mit sich selbst kollidieren können (Stichwort &quot;Include Guard&quot;). Von der Seite brauchst du also keine Probleme erwarten.<br />
Für SDL_Surface und ähnliches reichen eventuell Forward-Deklarationen aus, wenn du dir den Header sparen willst, für std::string gibt es keine portable Forward-Deklaration.</p>
<p>&quot;using namespace std;&quot; ist da kritischer, weil es den gesamten Namensraum aus den Angeln hebt - und damit in fremden Programmen möglicherweise Kollisionen auslöst zwischen Namen, die nie auch nur miteinander verwendet wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438497</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 17 Jan 2008 15:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 15:37:26 GMT]]></title><description><![CDATA[<p>Dann krieg ich wohl langsam alles im Griff. Mein Code dürfte jetzt sauber sein und ich sehe Klarheit.</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438501</guid><dc:creator><![CDATA[xBlackKnightx]]></dc:creator><pubDate>Thu, 17 Jan 2008 15:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 15:38:43 GMT]]></title><description><![CDATA[<p>Dass SDL_Surface* keinen Fehler gibt liegt einfach daran, dass es der Rückgabetyp ist, der spielt zu dem Zeitpunkt noch keine Rolle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438504</guid><dc:creator><![CDATA[SDLler]]></dc:creator><pubDate>Thu, 17 Jan 2008 15:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionen mit Default-Argumenten als Deklaration on Thu, 17 Jan 2008 20:31:13 GMT]]></title><description><![CDATA[<p>Nichtsdestotrotz muß es für 'SDL_Surface' eine Vorwärtsreferenz geben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1438663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1438663</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 17 Jan 2008 20:31:13 GMT</pubDate></item></channel></rss>