<?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[Problem mit Defaultparameter...]]></title><description><![CDATA[<p>Hallo!<br />
Ich arbeite mich gerad durch ein C++ Einstiegsbuch durch, wo auch Übungsaufgaben zu lösen sind. Die Aufgabe an der ich hänge lautet ein Fakultätsprogramm mit rekursivem Algorythmus zu schreiben. Das Problem liegt nicht in der Idee zur Lösung der Aufgabe, sondern an dem Defaultparameter, den ich in der Funktion &quot;fakult&quot; habe. Vorher Deklariere ich ja den Prototyp der Funktion &quot;fakult&quot;, damit ich die funktion auch unter die main-Methode stellen kann.<br />
Bei folgendem Code erhalte ich folgende Fehlermeldung:</p>
<pre><code>#include &lt;iostream&gt;
int fakult(int , int erg = 1);

void main() {
int n;
cout &lt;&lt; &quot;Fakultaetsprogramm mit rekursivem Algorythmus.&quot; &lt;&lt; endl &lt;&lt; endl;
cout &lt;&lt; &quot;Eingabe(n):\t&quot;;
cin &gt;&gt; n;
cout &lt;&lt; &quot;Fakultaet n = &quot; &lt;&lt; fakult(n);
}

int fakult(int n, int erg=1) {    // Line 12
if(n&gt;0) {
	erg *= n;
	return fakult((n-1), erg); // stimmt, war ein dummer fehler(behoben)
	}
else return erg;
}
</code></pre>
<p><strong>Fehlermeldung:</strong> <em>Error learncpp13.cpp 12: Default argument value redeclared for parameter 'erg'</em></p>
<p>Die Fehlermeldung verstehe ich auch: Es findet eine Redeklaration von des Defaultparameters &quot;erg&quot; statt. Aber sobald ich das int vor dem erg wegnehme(in der tatsächlichen Funktion) kommt diese</p>
<p><strong>Fehlermeldung:</strong> <em>Error learncpp13.cpp 12: Type name expected</em></p>
<p>Wie kann ich nun damit umgehen, ohne dass ich die Funktion vor die Mainfunktion setze und den die Deklaration des Prototyps weglasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/126966/problem-mit-defaultparameter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 23:05:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/126966.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Nov 2005 11:58:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Defaultparameter... on Sun, 20 Nov 2005 12:23:45 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich arbeite mich gerad durch ein C++ Einstiegsbuch durch, wo auch Übungsaufgaben zu lösen sind. Die Aufgabe an der ich hänge lautet ein Fakultätsprogramm mit rekursivem Algorythmus zu schreiben. Das Problem liegt nicht in der Idee zur Lösung der Aufgabe, sondern an dem Defaultparameter, den ich in der Funktion &quot;fakult&quot; habe. Vorher Deklariere ich ja den Prototyp der Funktion &quot;fakult&quot;, damit ich die funktion auch unter die main-Methode stellen kann.<br />
Bei folgendem Code erhalte ich folgende Fehlermeldung:</p>
<pre><code>#include &lt;iostream&gt;
int fakult(int , int erg = 1);

void main() {
int n;
cout &lt;&lt; &quot;Fakultaetsprogramm mit rekursivem Algorythmus.&quot; &lt;&lt; endl &lt;&lt; endl;
cout &lt;&lt; &quot;Eingabe(n):\t&quot;;
cin &gt;&gt; n;
cout &lt;&lt; &quot;Fakultaet n = &quot; &lt;&lt; fakult(n);
}

int fakult(int n, int erg=1) {    // Line 12
if(n&gt;0) {
	erg *= n;
	return fakult((n-1), erg); // stimmt, war ein dummer fehler(behoben)
	}
else return erg;
}
</code></pre>
<p><strong>Fehlermeldung:</strong> <em>Error learncpp13.cpp 12: Default argument value redeclared for parameter 'erg'</em></p>
<p>Die Fehlermeldung verstehe ich auch: Es findet eine Redeklaration von des Defaultparameters &quot;erg&quot; statt. Aber sobald ich das int vor dem erg wegnehme(in der tatsächlichen Funktion) kommt diese</p>
<p><strong>Fehlermeldung:</strong> <em>Error learncpp13.cpp 12: Type name expected</em></p>
<p>Wie kann ich nun damit umgehen, ohne dass ich die Funktion vor die Mainfunktion setze und den die Deklaration des Prototyps weglasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/922065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922065</guid><dc:creator><![CDATA[Bebbo Erbse]]></dc:creator><pubDate>Sun, 20 Nov 2005 12:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Defaultparameter... on Sun, 20 Nov 2005 12:21:34 GMT]]></title><description><![CDATA[<p>Bebbo Erbse schrieb:</p>
<blockquote>
<p><strong>Fehlermeldung:</strong> <em>Error learncpp13.cpp 12: Default argument value redeclared for parameter 'erg'</em></p>
<p>Die Fehlermeldung verstehe ich auch: Es findet eine Redeklaration von des Defaultparameters &quot;erg&quot; statt. Aber sobald ich das int vor dem erg wegnehme(in der tatsächlichen Funktion) kommt diese</p>
</blockquote>
<p>Nicht ganz - du redeklarierst den <em>Defaultwert</em> von erg. Lass einfach das &quot;=1&quot; weg...<br />
ETA: dto für deinen Selbstaufruf von fakult: gib einfach den Wert an den du übergeben willst oder lass ihn ganz weg (um den Defaultwert zu nehmen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/922086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922086</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sun, 20 Nov 2005 12:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Defaultparameter... on Sun, 20 Nov 2005 12:21:55 GMT]]></title><description><![CDATA[<p>Achso, vielen Dank, das klappt auch!<br />
Nur noch eine Frage zum Verständnis: Wenn ich einer Variablen einen Wert zuweiese ist das doch eine Initialisierung, oder?<br />
Heißt das, im Falle einer Wertzuweisung bei einem Defaultparameter in der Funktionsignatur nennt man das Wertdeklaration?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/922092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922092</guid><dc:creator><![CDATA[Bebbo Erbse]]></dc:creator><pubDate>Sun, 20 Nov 2005 12:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Defaultparameter... on Sun, 20 Nov 2005 13:34:54 GMT]]></title><description><![CDATA[<p>Bebbo Erbse schrieb:</p>
<blockquote>
<p>Nur noch eine Frage zum Verständnis: Wenn ich einer Variablen einen Wert zuweiese ist das doch eine Initialisierung, oder?</p>
</blockquote>
<p>Sofern du dies bei der Deklaration bzw. Definition der Variablen machst, ja. Bei Defaultparameter bedeutet dies folgendes:</p>
<blockquote>
<p>The default argument expression has the same semantic constraints as the initializer expression in a declaration of a variable of the parameter type, using the copy-initialization semantics</p>
</blockquote>
<p>Bebbo Erbse schrieb:</p>
<blockquote>
<p>Heißt das, im Falle einer Wertzuweisung bei einem Defaultparameter in der Funktionsignatur nennt man das Wertdeklaration?</p>
</blockquote>
<p>Nicht dass ich ich wüsste. Man spricht halt einfach von <em>8.3.6 Default arguments</em>. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> ISO/IEC 14882:2003(E)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/922224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/922224</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 20 Nov 2005 13:34:54 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Defaultparameter... on Mon, 21 Nov 2005 07:59:11 GMT]]></title><description><![CDATA[<p>Ich frage mich, wozu du überhaupt den Default-Parameter benötigst. Du gibst das ERbegnis doch per return zurück (und dank Wert-Übergabe kannst du über den Parameter nichts zurückschicken).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/923007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/923007</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 21 Nov 2005 07:59:11 GMT</pubDate></item></channel></rss>