<?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[Datum erhöhen, die zweite Version]]></title><description><![CDATA[<p>In dieser zweiten Date Aufgabe kann man den Konstruktor verwenden. Das habe ich auch gemacht damit der Konstruktor auf gültige werte prüft und wenn es gültig ist dann soll es die Werte ausgeben. Und genau dort ist mein Problem, wenn ich in den Konstruktor schreiben würde dd.y dann sagt der Compiler das dd ein nicht deklarierter Bezeichner ist obwohl dd doch für ein Date Objekt ist. Als erste will ich das die werte ausgegeben werden und wenn das geht dann wird an add_day gearbeitet. Bis jetzt habe ich so viel gemacht denke das der Fehler im Konstruktor ist.</p>
<pre><code class="language-cpp">struct Date{
	int y,m,d; // Jahr, Monat, Tag
	Date(int y,int m,int d); // prüft auf gültiges Datum und initialisiert es
	void add_day(int n); // erhöht Date um n Tage
};

Date::Date(int y,int m,int d)
{
	if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
	{
		y = 0;
		m = 0;
		d = 0;
	} 
	else
	{
		y = y;
		m = m;
		d = d;
	}
}

void f()
{
	Date today(1978,6,25);
	cout &lt;&lt; today.d &lt;&lt; endl;

	Date tomorrow = today;
	cout &lt;&lt; tomorrow.d &lt;&lt; endl;
}

int main()
{
    void f();

    keep_window_open();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/280777/datum-erhöhen-die-zweite-version</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 00:21:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280777.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jan 2011 09:56:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 09:56:35 GMT]]></title><description><![CDATA[<p>In dieser zweiten Date Aufgabe kann man den Konstruktor verwenden. Das habe ich auch gemacht damit der Konstruktor auf gültige werte prüft und wenn es gültig ist dann soll es die Werte ausgeben. Und genau dort ist mein Problem, wenn ich in den Konstruktor schreiben würde dd.y dann sagt der Compiler das dd ein nicht deklarierter Bezeichner ist obwohl dd doch für ein Date Objekt ist. Als erste will ich das die werte ausgegeben werden und wenn das geht dann wird an add_day gearbeitet. Bis jetzt habe ich so viel gemacht denke das der Fehler im Konstruktor ist.</p>
<pre><code class="language-cpp">struct Date{
	int y,m,d; // Jahr, Monat, Tag
	Date(int y,int m,int d); // prüft auf gültiges Datum und initialisiert es
	void add_day(int n); // erhöht Date um n Tage
};

Date::Date(int y,int m,int d)
{
	if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
	{
		y = 0;
		m = 0;
		d = 0;
	} 
	else
	{
		y = y;
		m = m;
		d = d;
	}
}

void f()
{
	Date today(1978,6,25);
	cout &lt;&lt; today.d &lt;&lt; endl;

	Date tomorrow = today;
	cout &lt;&lt; tomorrow.d &lt;&lt; endl;
}

int main()
{
    void f();

    keep_window_open();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009638</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 09:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 11:11:08 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>Und genau dort ist mein Problem, wenn ich in den Konstruktor schreiben würde dd.y dann sagt der Compiler das dd ein nicht deklarierter Bezeichner ist obwohl dd doch für ein Date Objekt ist. Als erste will ich das die werte ausgegeben werden und wenn das geht dann wird an add_day gearbeitet. }</p>
</blockquote>
<p>Äh, was? Obwohl ich nicht viel verstanden habe kann ich zwei Ratschläge geben, denke ich:</p>
<ol>
<li>
<p>Verwende unsigned int statt int, damit sparst du dir die lästige Prüfung auf negative Zahlen und musst nur noch sicherstellen, dass die Obergrenzen nicht verletzt werden.</p>
</li>
<li>
<p>Da die member und die Parametervariablen im Konstruktor die gleichen Namen haben musst du die member Variablen ausdrücklich benennen:</p>
</li>
</ol>
<pre><code class="language-cpp">Date::Date( unsigned int y, unsigned int m, unsigned int d )
{
   if( ... )
   {
      this-&gt;y = y;
      this-&gt;m = m;
      this-&gt;d = d;
   }
   else
   {
      this-&gt;y = 0;
      this-&gt;m = 0;
      this-&gt;d = 0;
   }
}
</code></pre>
<p>Um dieses Problem werden member Variablennamen häufig besonders gekennzeichnet, z.B. mit einem vorangestellten m (z.B. mYear) oder einem angehängten Unterstrich (z.B. Year_ ).<br />
Übrigens: Variablennamen dürfen auch aus mehreren Buchstaben bestehen, man sollte schon aussagekräftige Bezeichner benutzen. Spätestens bei einem DateTime Objekt, das Datum und Uhrzeit benutzt, würdest du mit deiner Benennung Schwierigkeiten bei Monat und Minute bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009675</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 11:24:02 GMT]]></title><description><![CDATA[<p>Das meine ich, wenn ich das schreibe dann bekomme einen Compiler Fehler:</p>
<pre><code class="language-cpp">Date::Date(int y,int m,int d)
{
	if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
	{
		dd.y = 0;  // da sagt dem Compiler das dd ein nicht dek-
		dd.m = 0;  // larierte Bezeichner ist was ich auch verstehe 
		dd.d = 0;
	}
	else
	{
		dd.y = y;
		dd.m = m;
		dd.d = d;
	} 
}
</code></pre>
<p>Wenn ich schreiben würde:</p>
<pre><code class="language-cpp">cout &lt;&lt; today.d &lt;&lt; endl;
</code></pre>
<p>Dann wird nichts angezeigt und das ist mein Problem. Wie sage ich dem Konstruktor das es bei today.d ein wert ausgeben soll dem man dann im Programm sehen kann? Denn bis jetzt sehe ich nichts nur das Programm läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009681</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 11:50:56 GMT]]></title><description><![CDATA[<p>Was soll dd denn sein?</p>
<p>Wenn du, wie von DocShoe vorgeschlagen, this in die Zuweisungen schreibst und zusätzlich in</p>
<pre><code class="language-cpp">int main()
{
    void f();
</code></pre>
<p>das void vor dem f entfernst, sollte dein Code funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009689</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 12:24:27 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis, es ist ein dummer schreib Fehler. Es werden zwei werte ausgeben soweit so gut, aber nur nicht die richtigen und das werde ich jetzt beheben. Das mit dem this ist gut gemeint nur das wird in einem späteren Kapitel erklärt, und jetzt weiß ich nicht was this macht.</p>
<p>Habe this geschrieben und die werte sind korrekt.</p>
<p>OK werte sind korrekt jetzt geht es ans add_day.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009694</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:24:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 12:42:33 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>Das mit dem this ist gut gemeint nur das wird in einem späteren Kapitel erklärt, und jetzt weiß ich nicht was this macht.</p>
</blockquote>
<p>this sagt, dass die Member der Klasse und nicht die Parameter gemeint sind. Du könntest stattdessen auch die Parameter yy, mm, dd nennen oder die Member m_y oder was auch immer, so dass du nicht zwei mal den gleichen Namen für verschiedenen Dinge verwendest.</p>
<p>m_ als Präfix für Membervariablen ist nicht unüblich, es gibt aber auch viele Meinungen dagegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009709</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 12:59:15 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>Das mit dem this ist gut gemeint nur das wird in einem späteren Kapitel erklärt, und jetzt weiß ich nicht was this macht.</p>
</blockquote>
<p>this sagt, dass die Member der Klasse und nicht die Parameter gemeint sind. Du könntest stattdessen auch die Parameter yy, mm, dd nennen oder die Member m_y oder was auch immer, so dass du nicht zwei mal den gleichen Namen für verschiedenen Dinge verwendest.</p>
<p>m_ als Präfix für Membervariablen ist nicht unüblich, es gibt aber auch viele Meinungen dagegen.</p>
</blockquote>
<p>Danke für die Erklärung, und wieder etwas gelernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009717</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 15:46:32 GMT]]></title><description><![CDATA[<p>Dank eurer Hilfe konnte ich die Übung erfolgreich machen. Hier der Code:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;std_lib_facilities.h&quot;

struct Date{
	int y,m,d;
	Date(int y,int m,int d);
	void add_day(int n);
};

Date::Date(int y,int m,int d)  // prüft auf gültiges Datum und initialisiert es
{
	if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
	{
		this-&gt;y = 0;
		this-&gt;m = 0;
		this-&gt;d = 0;
	}
	else
	{
		this-&gt;y = y;
		this-&gt;m = m;
		this-&gt;d = d;
	}
}

void Date::add_day(int n) // erhöhe Date um n Tage
{	
	this-&gt;d = d;
	d = d + n;
}

ostream&amp; operator&lt;&lt;(ostream&amp; os, const Date&amp; d)
{
	return os &lt;&lt; '&quot;' &lt;&lt; d.d &lt;&lt; '&quot;' &lt;&lt; '\n';
}

void f()
{
	Date today(1978,6,25);
	operator&lt;&lt;(cout,today);

	Date tomorrow = today;
	tomorrow.add_day(1);
	operator&lt;&lt;(cout,tomorrow);

	Date non(2209,8,-78);
	operator&lt;&lt;(cout,non);
}

int main()
try{
    f();

    keep_window_open();
    return 0;
}
catch (runtime_error e) {	
	cout &lt;&lt; e.what() &lt;&lt; '\n';
	keep_window_open(&quot;~&quot;);	
}
catch (...) {	
	cout &lt;&lt; &quot;exiting\n&quot;;
	keep_window_open(&quot;~&quot;);	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009786</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 16:00:18 GMT]]></title><description><![CDATA[<p>Zwei Dinge kannst du noch verbessern:</p>
<ol>
<li>
<p>in add_day kannst du die komplette Zeile mit dem this sparen, hier heißt der Parameter ja n und d ist dann die Membervariable.</p>
</li>
<li>
<p>Der schöne am Outputoperator ist, dass du dass</p>
</li>
</ol>
<pre><code class="language-cpp">operator&lt;&lt;(cout,today);
</code></pre>
<p>auch so schreiben kannst:</p>
<pre><code class="language-cpp">cout &lt;&lt; today;
</code></pre>
<p>oder sogar:</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Heute ist Tag &quot; &lt;&lt; today;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009804</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 16:33:12 GMT]]></title><description><![CDATA[<p>Danke für den Tipp, habe gleich so geschrieben. Aber eins habe ich nicht so verstanden könntest du das bitte erklären, warum brauchte in dem Konstruktor this-&gt; und im add_day nicht? Ich vermute wegen zwei gleiche namen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009821</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 16:45:04 GMT]]></title><description><![CDATA[<p>winux schrieb:</p>
<blockquote>
<p>Danke für den Tipp, habe gleich so geschrieben. Aber eins habe ich nicht so verstanden könntest du das bitte erklären, warum brauchte in dem Konstruktor this-&gt; und im add_day nicht? Ich vermute wegen zwei gleiche namen?</p>
</blockquote>
<p>Ja. Im Konstruktor hast du einen Parameter mit Namen &quot;d&quot; und die Klasse hat eine Membervariable mit Namen &quot;d&quot;. Der Compiler muss sich für eines der beiden Ds entscheiden und nimmt den Parameter (die Regeln dafür werden in deinem Buch vermutlich noch genannt werden). this-&gt;d sagt dann, hier meine ich die Membervaiable. In add_day gibt es keinen Parameter der &quot;d&quot; heißt, deshalb ist mit d ganz klar die Membervariable gemeint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009827</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 16:50:31 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>winux schrieb:</p>
<blockquote>
<p>Danke für den Tipp, habe gleich so geschrieben. Aber eins habe ich nicht so verstanden könntest du das bitte erklären, warum brauchte in dem Konstruktor this-&gt; und im add_day nicht? Ich vermute wegen zwei gleiche namen?</p>
</blockquote>
<p>Ja. Im Konstruktor hast du einen Parameter mit Namen &quot;d&quot; und die Klasse hat eine Membervariable mit Namen &quot;d&quot;. Der Compiler muss sich für eines der beiden Ds entscheiden und nimmt den Parameter (die Regeln dafür werden in deinem Buch vermutlich noch genannt werden). this-&gt;d sagt dann, hier meine ich die Membervaiable. In add_day gibt es keinen Parameter der &quot;d&quot; heißt, deshalb ist mit d ganz klar die Membervariable gemeint.</p>
</blockquote>
<p>Jetzt verstehe ich es, danke für die Erklärung und für deine Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009832</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 16:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:01:52 GMT]]></title><description><![CDATA[<p>Das ist die dritte Version der Date Aufgabe, und eine Frage habe ich. Ist der folgende Code korrekt? Was mich interessiert ist ob der Date Konstruktor Memberinitialisierer korrekt ist?</p>
<pre><code class="language-cpp">class Date{
	int y,m,d;                      // Year, Month, Day
public:
	Date(int yy,int mm,int dd);     // check for a valid Date and initialized it 
	void add_day(int n);            // increase Date with n Days 
	int month() {return m;}
	int day() {return d;}
	int year() {return y;}
};

Date::Date(int yy,int mm,int dd):y(yy),m(mm),d(dd)
{
	if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
	{
		y = 0;
		m = 0;
		d = 0;
	}
	else {
		y = yy;
		m = mm;
		d = dd;
	}
}

void Date::add_day(int n)
{
	if(d + n &gt;= 32) { d = 0;}
    else {d = d + n;}
}

ostream&amp; operator&lt;&lt;(ostream&amp; os, Date&amp; d)
{
	return os &lt;&lt; '&quot;' &lt;&lt; d.day() &lt;&lt; '&quot;' &lt;&lt; '\n';
}

void f()
{
	Date today(1978,6,25);
	cout &lt;&lt; today;

	Date tomorrow = today;
	tomorrow.add_day(1);
	cout &lt;&lt; tomorrow;

	Date non(2009,9,56);
	cout &lt;&lt; non;

	Date non2(2010,10,29);
	non2.add_day(12);
	cout &lt;&lt; non2;
}

int main()
try{
    f();

    keep_window_open();
    return 0;
}
catch (runtime_error e) {	
	cout &lt;&lt; e.what() &lt;&lt; '\n';
	keep_window_open(&quot;~&quot;);	
}
catch (...) {	
	cout &lt;&lt; &quot;exiting\n&quot;;
	keep_window_open(&quot;~&quot;);	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009901</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:01:55 GMT]]></title><description><![CDATA[<p>Wie wärs mit:</p>
<pre><code class="language-cpp">cout &lt;&lt; today;
</code></pre>
<p>anstatt:</p>
<pre><code class="language-cpp">operator&lt;&lt;(cout, today);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009902</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:03:23 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wie wärs mit:</p>
<pre><code class="language-cpp">cout &lt;&lt; today;
</code></pre>
<p>anstatt:</p>
<pre><code class="language-cpp">operator&lt;&lt;(cout, today);
</code></pre>
</blockquote>
<p>Gerade korrigiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009904</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:05:32 GMT]]></title><description><![CDATA[<p>Ich würde an deiner Stelle das \n nicht in den operator &lt;&lt; geben, sondern einfach</p>
<pre><code class="language-cpp">cout &lt;&lt; today &lt;&lt; endl;
</code></pre>
<p>schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009906</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:08:11 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ich würde an deiner Stelle das \n nicht in den operator &lt;&lt; geben, sondern einfach</p>
<pre><code class="language-cpp">cout &lt;&lt; today &lt;&lt; endl;
</code></pre>
<p>schreiben.</p>
</blockquote>
<p>OK gemacht, aber mich interessiert ob der Konstruktor Memberinitialisierer korrekt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009910</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:15:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Date::Date(int yy,int mm,int dd):y(yy),m(mm),d(dd)
{
    if(y&lt;1200 || y&gt;2200 || m&lt;1 || m&gt;12 || d&lt;1 || d&gt;31)
    {
        y = 0;
        m = 0;
        d = 0;
    }
    else {
        y = yy;
        m = mm;
        d = dd;
    }
}
</code></pre>
<p>Das ergibt keinen Sinn. Deine Membervariablen werden hier in jedem Fall 2 mal &quot;initialisiert&quot;. Es macht auch keinen Sinn, die Werte zu überprüfen. Ein Assert reicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009916</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:18:22 GMT]]></title><description><![CDATA[<p>Und das hier, die Übung verlang eine Überprüfung der werte:</p>
<pre><code class="language-cpp">Date::Date(int yy,int mm,int dd):y(yy),m(mm),d(dd)
{
	if(yy&lt;1200 || yy&gt;2200 || mm&lt;1 || mm&gt;12 || dd&lt;1 || dd&gt;31)
	{
		y = 0;
		m = 0;
		d = 0;
	}
	else {
		yy;
		mm;
		dd;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009921</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:20:29 GMT]]></title><description><![CDATA[<p>Ein assert ist eine ausreichende Überprüfung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009923</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:23:54 GMT]]></title><description><![CDATA[<p>So weit bin ich nicht im Buch und ich weiss nicht was ein assert ist. Die Übung muss man im Konstrutor eine Überprüfung machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009926</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:31:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;cassert&gt;

.
.
.

Date::Date(int yy, int mm, int dd)
	: y(yy)
	, m(mm)
	, d(dd)
{
    assert(yy &gt;  1200 &amp;&amp;
	       yy &lt;= 2200 &amp;&amp;
	       mm &gt;  0    &amp;&amp;
	       mm &lt;= 12   &amp;&amp;
	       dd &gt;  0    &amp;&amp;
	       dd &lt;= 31);
}

.
.
.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009928</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:31:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:32:45 GMT]]></title><description><![CDATA[<p>bäh, verdrückt. post löschen bitte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009932</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:31:12 GMT]]></title><description><![CDATA[<p>assert ist nicht dazu gedacht, Usereingaben zu kontrollieren, sondern Programmfehler zu identifizieren. Gut er macht hier zwar keine Usereingabe, aber vielleicht will er dies ja später nachholen.</p>
<p>@ winux<br />
Was du gerade machst ist doppelt gemoppel, einmal weist du die Werte mit der Initialisierungsliste zu, und danach überprüfst du diese und überschreibst sie... Was denkst du macht das hier?</p>
<pre><code class="language-cpp">else {
        yy;
        mm;
        dd;
    }
</code></pre>
<p>Nichts!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009933</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:36:49 GMT]]></title><description><![CDATA[<p>Das da nichts gemacht wird ist mir klar, nur wie löse das der Konstuktor die Werte prüft und nur dann initialisiert wenn die Werte korrekt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009935</guid><dc:creator><![CDATA[winux]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Datum erhöhen, die zweite Version on Fri, 21 Jan 2011 19:38:13 GMT]]></title><description><![CDATA[<p>Es macht keinen Sinn, die Werte zu ändern, wenn sie ungültig sind. Benutze assert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009937</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:38:13 GMT</pubDate></item></channel></rss>