<?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[ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Ich loese gerade eine Aufgabe fuer einen C++ Einsteigerkurs und habe soweit alles fertig (denke ich). Jedoch uebernimmt mein Objekt scheinbar keine Aenderungen.ich moechte dies kurz anreissen (ich hoffe ich bekomme das angemessen komprimiert).</p>
<p>Ich habe ganz oben eine Fach.hh in der Hierarchie:</p>
<p>Fach.hpp:</p>
<pre><code class="language-cpp">class Fach
{
	private:
		int frei;
		int belegt;

    public:
		Fach(int fr);

		int get_frei(void) const;
		int get_belegt(void) const;
		void set_frei(int k);
		void set_belegt(int k);

		int tu_sache_rein(int menge);
		int hol_sache_raus(int menge);
};
</code></pre>
<p>Fach.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Fach.hpp&quot;

using namespace std; 

// Konstruktor
	Fach::Fach(int fr)
		: frei(fr), belegt(0)
	{}

	//getter
	int Fach::get_frei() const
	{
		return this-&gt;frei;
	}

	int Fach::get_belegt() const
	{
		return this-&gt;belegt;
	}
	//setter
	void Fach::set_frei(int k)
	{
		frei = k;
	}

	void Fach::set_belegt(int k)
	{
		belegt = k;
	}

	int Fach::tu_sache_rein(int menge)
	{
		if(menge &gt;= 0){
			if (menge &gt; get_frei()){
				cout &lt;&lt; &quot;Sie tun mehr rein als reingeht.&quot; &lt;&lt; endl;
				int cache = get_frei();
				set_belegt(cache + get_belegt());
				set_frei(0);
				return cache;
			}
			else{
				set_belegt(get_belegt() + menge);
				set_frei(get_frei() - menge);
				return menge;
			}
		}
		else{
			cout &lt;&lt; &quot;Sie haben 0 oder weniger reingetan. Das macht kein Sinn.&quot; &lt;&lt; endl;
			return 0;
		}
	}
</code></pre>
<p>Den Rest habe ich mal weggelassen, da unerheblich. Nun habe ich viele Facherklassen die alle relativ gleich sind: Cola_Fach, Eier_fach usw. usw., die alle von Fach erben sollen, aber beim Konstruktor eine Beschraenkung bekommen<br />
an einem Beispiel von Cola_Fach will ich das mal zeigen (Dies hat nur platz fuer 6 Flaschen):</p>
<p>Cola_Fach.hpp:</p>
<pre><code class="language-cpp">class Cola_Fach : public Fach
{
	private:

	public:
	Cola_Fach();

};
</code></pre>
<p>Cola_Fach.hpp:</p>
<pre><code class="language-cpp">#include &quot;Fach.hpp&quot;
#include &quot;Cola_Fach.hpp&quot;

Cola_Fach::Cola_Fach()
: Fach(6)
{}
</code></pre>
<p>Alle diese Faecher sind gebuendelt in einem Kuehlschrank, den ich beladen will:<br />
hier mal nur mit einem Cola_Fach gezeigt (Danach sollen auch andere Faecher hinzu):</p>
<p>Kuehlschrank.hpp :</p>
<pre><code class="language-cpp">#include &quot;Fach.hpp&quot;
#include &quot;Cola_Fach.hpp&quot;

class Kuehlschrank{

private:
	bool tuer_offen;
	Cola_Fach colafach;

public:
	Kuehlschrank(void);
	Cola_Fach get_Cola_Fach() const;

	void showall(void);

	bool offen_oder_nicht();
	void schliessen(void);
	void oeffnen(void);

	int tu_rein(Fach&amp; fach,int menge);
	int hol_raus(Fach fach,int menge);

};
</code></pre>
<p>Kuehlschrank.cpp :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Kuehlschrank.hpp&quot;

using namespace std; 

	//// Konstruktor
	Kuehlschrank::Kuehlschrank(void)
	{
		tuer_offen = false;

		Cola_Fach cf;
		colafach = cf;

	}

	Cola_Fach Kuehlschrank::get_Cola_Fach() const{
		return colafach;
	}

	bool Kuehlschrank::offen_oder_nicht()
	{
		return tuer_offen;
	}

	void Kuehlschrank::showall()
	{
		cout &lt;&lt; &quot; Colaflaschen: &quot; &lt;&lt; colafach.get_frei() &lt;&lt; &quot; noch Platz, &quot; &lt;&lt; colafach.get_belegt() &lt;&lt; &quot;drinne&quot; &lt;&lt; endl;

		if(offen_oder_nicht()){
			cout &lt;&lt; &quot; Unser Kuehlschrank ist offen&quot; &lt;&lt; endl;		
		}
		else{
			cout &lt;&lt; &quot;Unser Kuehlschrank ist geschlossen&quot; &lt;&lt; endl;		
		}

	}

	int Kuehlschrank::tu_rein(Fach&amp; fach, int menge){
		if(offen_oder_nicht()){//ist offen?
			return fach.tu_sache_rein(menge);
		}
		else{
			cout &lt;&lt; &quot;Die Tuer ist zu! Du kannst nichts reintun&quot; &lt;&lt; endl;
			return 0;
		}
	}
</code></pre>
<p>Nun wollte ich einen Kuehlschrank machen und den befuellen (in einer main.cpp)</p>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;Kuehlschrank.hpp&quot;

int main(void)
{	
	Kuehlschrank k;
	k.oeffnen();
	k.showall();
	cout &lt;&lt; k.tu_rein(k.get_Cola_Fach(),5) &lt;&lt; endl;
	k.showall();

        return 0;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>der kuehlschrank ist nun offen !
 Colaflaschen: 6 noch Platz, 0drinne
 Eier: 8 noch Platz, 0drinne
 Kaese: 50 noch Platz, 0drinne
 Butter: 500 noch Platz, 0drinne
 Unser Kuehlschrank ist offen
5
 Colaflaschen: 6 noch Platz, 0drinne
 Eier: 8 noch Platz, 0drinne
 Kaese: 50 noch Platz, 0drinne
 Butter: 500 noch Platz, 0drinne
 Unser Kuehlschrank ist offen
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/243098/erledigt-anfaengerfehler-vererbeung-objekt-uebernimmt-aenderung-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 15:50:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/243098.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jun 2009 09:47:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 21:14:18 GMT]]></title><description><![CDATA[<p>Guten Tag!</p>
<p>Ich loese gerade eine Aufgabe fuer einen C++ Einsteigerkurs und habe soweit alles fertig (denke ich). Jedoch uebernimmt mein Objekt scheinbar keine Aenderungen.ich moechte dies kurz anreissen (ich hoffe ich bekomme das angemessen komprimiert).</p>
<p>Ich habe ganz oben eine Fach.hh in der Hierarchie:</p>
<p>Fach.hpp:</p>
<pre><code class="language-cpp">class Fach
{
	private:
		int frei;
		int belegt;

    public:
		Fach(int fr);

		int get_frei(void) const;
		int get_belegt(void) const;
		void set_frei(int k);
		void set_belegt(int k);

		int tu_sache_rein(int menge);
		int hol_sache_raus(int menge);
};
</code></pre>
<p>Fach.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Fach.hpp&quot;

using namespace std; 

// Konstruktor
	Fach::Fach(int fr)
		: frei(fr), belegt(0)
	{}

	//getter
	int Fach::get_frei() const
	{
		return this-&gt;frei;
	}

	int Fach::get_belegt() const
	{
		return this-&gt;belegt;
	}
	//setter
	void Fach::set_frei(int k)
	{
		frei = k;
	}

	void Fach::set_belegt(int k)
	{
		belegt = k;
	}

	int Fach::tu_sache_rein(int menge)
	{
		if(menge &gt;= 0){
			if (menge &gt; get_frei()){
				cout &lt;&lt; &quot;Sie tun mehr rein als reingeht.&quot; &lt;&lt; endl;
				int cache = get_frei();
				set_belegt(cache + get_belegt());
				set_frei(0);
				return cache;
			}
			else{
				set_belegt(get_belegt() + menge);
				set_frei(get_frei() - menge);
				return menge;
			}
		}
		else{
			cout &lt;&lt; &quot;Sie haben 0 oder weniger reingetan. Das macht kein Sinn.&quot; &lt;&lt; endl;
			return 0;
		}
	}
</code></pre>
<p>Den Rest habe ich mal weggelassen, da unerheblich. Nun habe ich viele Facherklassen die alle relativ gleich sind: Cola_Fach, Eier_fach usw. usw., die alle von Fach erben sollen, aber beim Konstruktor eine Beschraenkung bekommen<br />
an einem Beispiel von Cola_Fach will ich das mal zeigen (Dies hat nur platz fuer 6 Flaschen):</p>
<p>Cola_Fach.hpp:</p>
<pre><code class="language-cpp">class Cola_Fach : public Fach
{
	private:

	public:
	Cola_Fach();

};
</code></pre>
<p>Cola_Fach.hpp:</p>
<pre><code class="language-cpp">#include &quot;Fach.hpp&quot;
#include &quot;Cola_Fach.hpp&quot;

Cola_Fach::Cola_Fach()
: Fach(6)
{}
</code></pre>
<p>Alle diese Faecher sind gebuendelt in einem Kuehlschrank, den ich beladen will:<br />
hier mal nur mit einem Cola_Fach gezeigt (Danach sollen auch andere Faecher hinzu):</p>
<p>Kuehlschrank.hpp :</p>
<pre><code class="language-cpp">#include &quot;Fach.hpp&quot;
#include &quot;Cola_Fach.hpp&quot;

class Kuehlschrank{

private:
	bool tuer_offen;
	Cola_Fach colafach;

public:
	Kuehlschrank(void);
	Cola_Fach get_Cola_Fach() const;

	void showall(void);

	bool offen_oder_nicht();
	void schliessen(void);
	void oeffnen(void);

	int tu_rein(Fach&amp; fach,int menge);
	int hol_raus(Fach fach,int menge);

};
</code></pre>
<p>Kuehlschrank.cpp :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Kuehlschrank.hpp&quot;

using namespace std; 

	//// Konstruktor
	Kuehlschrank::Kuehlschrank(void)
	{
		tuer_offen = false;

		Cola_Fach cf;
		colafach = cf;

	}

	Cola_Fach Kuehlschrank::get_Cola_Fach() const{
		return colafach;
	}

	bool Kuehlschrank::offen_oder_nicht()
	{
		return tuer_offen;
	}

	void Kuehlschrank::showall()
	{
		cout &lt;&lt; &quot; Colaflaschen: &quot; &lt;&lt; colafach.get_frei() &lt;&lt; &quot; noch Platz, &quot; &lt;&lt; colafach.get_belegt() &lt;&lt; &quot;drinne&quot; &lt;&lt; endl;

		if(offen_oder_nicht()){
			cout &lt;&lt; &quot; Unser Kuehlschrank ist offen&quot; &lt;&lt; endl;		
		}
		else{
			cout &lt;&lt; &quot;Unser Kuehlschrank ist geschlossen&quot; &lt;&lt; endl;		
		}

	}

	int Kuehlschrank::tu_rein(Fach&amp; fach, int menge){
		if(offen_oder_nicht()){//ist offen?
			return fach.tu_sache_rein(menge);
		}
		else{
			cout &lt;&lt; &quot;Die Tuer ist zu! Du kannst nichts reintun&quot; &lt;&lt; endl;
			return 0;
		}
	}
</code></pre>
<p>Nun wollte ich einen Kuehlschrank machen und den befuellen (in einer main.cpp)</p>
<p>main.cpp:</p>
<pre><code class="language-cpp">#include &quot;Kuehlschrank.hpp&quot;

int main(void)
{	
	Kuehlschrank k;
	k.oeffnen();
	k.showall();
	cout &lt;&lt; k.tu_rein(k.get_Cola_Fach(),5) &lt;&lt; endl;
	k.showall();

        return 0;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>der kuehlschrank ist nun offen !
 Colaflaschen: 6 noch Platz, 0drinne
 Eier: 8 noch Platz, 0drinne
 Kaese: 50 noch Platz, 0drinne
 Butter: 500 noch Platz, 0drinne
 Unser Kuehlschrank ist offen
5
 Colaflaschen: 6 noch Platz, 0drinne
 Eier: 8 noch Platz, 0drinne
 Kaese: 50 noch Platz, 0drinne
 Butter: 500 noch Platz, 0drinne
 Unser Kuehlschrank ist offen
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725476</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 21:14:18 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 09:54:10 GMT]]></title><description><![CDATA[<p>Nur mal so nebenbei: wieso haben deine Header die Endung &quot;.hh&quot;? Das habe ich ja noch nie gesehen. Normalerweise nimmt man da &quot;.h&quot; oder &quot;.hpp&quot;. <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/1725478</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725478</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 12 Jun 2009 09:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 09:58:53 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Nur mal so nebenbei: wieso haben deine Header die Endung &quot;.hh&quot;? Das habe ich ja noch nie gesehen. Normalerweise nimmt man da &quot;.h&quot; oder &quot;.hpp&quot;. <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>
</blockquote>
<p>hab' ich rausgebuegelt und editiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725482</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 09:58:53 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 10:04:30 GMT]]></title><description><![CDATA[<p>&lt;ZEINSIERTER KÄÄÄSE&gt;</p>
<p>//Edit 1: Soweit ich weis ist *.cc und *.hh völlig legitim! <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="🙂"
    /> Ich nutze ganz langweilig *.cpp und *.h</p>
<p>//Edit 2: DU MUSST BEI get_Cola_Fach() eine Referenz zurückgeben!<br />
Cola_Fach&amp; get_Cola_Fach();<br />
statt<br />
Cola_Fach get_Cola_Fach();<br />
Weil sonst in tu_rein bloss eine temporäre Kopie von Cola_Fach verändert wird und nicht die Instanz im Kühlschrank!! <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/1725485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725485</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 10:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 10:10:22 GMT]]></title><description><![CDATA[<p>Ach und bei tu_rein brauchst du auch eine Referenz als Argument!</p>
<pre><code class="language-cpp">//.h
Cola_Fach&amp; get_Cola_Fach(); 
int tu_rein(Fach&amp; fach,int menge); 

//.cc
Cola_Fach&amp; Kuehlschrank::get_Cola_Fach(){
        return colafach;
    } 

int Kuehlschrank::tu_rein(Fach&amp; fach, int menge){
        if(offen_oder_nicht()){//ist offen?
            return fach.tu_sache_rein(menge);
        }
        else{
            cout &lt;&lt; &quot;Die Tuer ist zu! Du kannst nichts reintun&quot; &lt;&lt; endl;
            return 0;
        }
    }
</code></pre>
<p>P.S: Warum schreibe ich so viel käse wenn ich eingeloggt bin? Mit Namen wie asldkhafkolhlsdköasd anonym ist alles besser <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725488</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 10:10:22 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 10:11:15 GMT]]></title><description><![CDATA[<p>Habe nun alles von dir umgesetzt pigeon!<br />
Exzellent so funktioniert es. Ich werde noch ca 10 min darueber nachdenken muessen warum, aber das wird schon.</p>
<p>habe es oben reineditiert!</p>
<p>Nochmals Danke. Das lief genial</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725489</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 10:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 10:19:09 GMT]]></title><description><![CDATA[<p>ancestral-knowledge schrieb:</p>
<blockquote>
<p>Exzellent so funktioniert es. Ich werde noch ca 10 min darueber nachdenken muessen warum, aber das wird schon.</p>
</blockquote>
<p>Eine Referenz ist einem Zeiger sehr ähnlich. Wenn du etwas mit einem Getter zurückgibts:</p>
<pre><code class="language-cpp">int klasse::get_schueler()  const { return anzahl; }
</code></pre>
<p>Bekommst du nur eine Kopie der Anzahl zurück. Das verändert niemals die Klasseninstanz! Daher kannst du auch hinter einen solchen getter &quot;const&quot; schreiben! (Was du auch tun solltest)</p>
<p>Wenn du nun eine Referenz zurück gibst, gibst du die Speicheradresse von &quot;anzahl&quot; in deiner Klasse zurück! KEINE KOPIE! Daher kannst du hinter einen solchen getter auch nicht const schreiben, da er ja die Klasse verändern kann! (ausser mit mutable aber das ist nun egal <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>
<p>Probiere doch das alles mal mit Zeigern! Dann wird es möglicherweise klarer... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725492</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 10:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 10:39:07 GMT]]></title><description><![CDATA[<p>Habe ich getan:<br />
Die Rueckgabetypen aus der Klasse Fach.hpp haben demnach einen konstanten Rueckgabetypen, da sie nur eine kopie erzeugen. Dies habe ich nochmal hinzugefuegt oben.</p>
<p>Bei dem Kuehlschrank jedoch habe ich ja eine Referenz auf mein Cola_Fach, da ich genau das Cola_Fach der Instanz aendern will. So muss der Rueckgabetyp des Getters Cola_Fach&amp; get_Cola_Fach(); auch eine Refernz sein, da ich ja auf die Adresse des Colafaches meiner Instanz will. Wenn ich diese habe muss ich diese auch an tu_rein(Fach&amp; fach, int menge) uebergeben, damit ich nicht auf einer Kopie meines Faches arbeite, sondern auf dem Fach meiner Instanz.</p>
<p>Ich denke ich habe es verstanden.</p>
<p>Danke nochmals fuer die Erlaeuterungen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725506</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 10:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 13:17:25 GMT]]></title><description><![CDATA[<p>Nein.</p>
<p>Mach wenn schon</p>
<pre><code class="language-cpp">const Cola_Fach&amp; get_Cola_Fach() const; // oder:
Cola_Fach const&amp; get_Cola_Fach() const; // ist genau dasselbe
</code></pre>
<p>sonst ist dein Setter nutzlos und du könntest gerade so gut einen <code>public</code> -Member anbieten. Durch die Const-Referenz kopierst du das Original ebenfalls nicht, aber verhinderst, dass es vom Aufrufer geändert wird. Das sollte auch so sein bei Get-Methoden (Lesezugriff).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725579</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 12 Jun 2009 13:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 16:11:29 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein.</p>
<p>Mach wenn schon</p>
<pre><code class="language-cpp">const Cola_Fach&amp; get_Cola_Fach() const; // oder:
Cola_Fach const&amp; get_Cola_Fach() const; // ist genau dasselbe
</code></pre>
<p>sonst ist dein Setter nutzlos und du könntest gerade so gut einen <code>public</code> -Member anbieten. Durch die Const-Referenz kopierst du das Original ebenfalls nicht, aber verhinderst, dass es vom Aufrufer geändert wird. Das sollte auch so sein bei Get-Methoden (Lesezugriff).</p>
</blockquote>
<p>Ich glaube das lasse ich lieber... habe einfach keine Ahnung was das nun machen soll. Habe es auch einfach mal kurz ausprobiert und dann bekomme ich irgendwelche Probleme bei tu_sache_rein<br />
&quot;error C2662: 'Fach::tu_sache_rein' : cannot convert 'this' pointer from 'const Fach' to 'Fach &amp;'&quot;</p>
<p>Trotzdem Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725674</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 16:08:01 GMT]]></title><description><![CDATA[<p>dann musst du das so übergeben:<br />
klasse.tu_was(*this);<br />
Wenn du das Objekt das hinter einem Zeiger steht (this ist ein Zeiger) willst, dann mach ein * davor. Und gib nicht so schnell auf!! <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>
<p>Und da deine Cola beim getter konstant zurückgegen wird (const Cola&amp;) darst du auch keine Methoden auf sie anwenden die die Cola verändern ... da sie ja const(ant) ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725675</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 16:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 17:10:24 GMT]]></title><description><![CDATA[<p>Pigeon schrieb:</p>
<blockquote>
<p>dann musst du das so übergeben:<br />
klasse.tu_was(*this);<br />
Wenn du das Objekt das hinter einem Zeiger steht (this ist ein Zeiger) willst, dann mach ein * davor. Und gib nicht so schnell auf!! <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>
<p>Und da deine Cola beim getter konstant zurückgegen wird (const Cola&amp;) darst du auch keine Methoden auf sie anwenden die die Cola verändern ... da sie ja const(ant) ist...</p>
</blockquote>
<p>Ich habe versucht eineige Sachen zu beherzigen aber langsam verstehe ich nichts mehr. Wenn eine Methode const ist, dann heisst das ja, dass man damit keine Membervariablen ändern kann.<br />
Jetzt habe ich das versucht und mein Programm umgebaut: Ich dachte : &quot;Nunja ich will ja mit get_Cola_Fach() tatsaechlich nichts veraendern und habe die Methode const gemacht wie editiert&quot;. Damit habe ich mich aber nun wieder an den Anfang katapultiert, denn nun aendert sich das Objekt wieder nicht....</p>
<p>Das wird immer verwirrender...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725699</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 17:10:24 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 17:12:45 GMT]]></title><description><![CDATA[<p>ancestral-knowledge schrieb:</p>
<blockquote>
<p>Damit habe ich mich aber nun wieder an den Anfang katapultiert, denn nun aendert sich das Objekt wieder nicht....</p>
<p>Das wird immer verwirrender...</p>
</blockquote>
<p>Das Gefühl habe ich auch. Wolltest du vorhin mit der indirekt über die Get-Methode das Objekt ändern? Zum Beispiel indem du eine Referenz gespeichert hast und dann über diese zugegriffen hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725702</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 12 Jun 2009 17:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 17:32:52 GMT]]></title><description><![CDATA[<p>was ich halt in der main versuche ist zur zeit (die methoden sind alle im erstn post):</p>
<pre><code class="language-cpp">k.showall();

Cola_Fach &amp;cf = k.get_Cola_Fach();
cout &lt;&lt; cf.get_belegt()&lt;&lt; endl; //liefert richtige anzahl 0
cout &lt;&lt;	cf.get_frei()&lt;&lt; endl;	//liefert richtige anzahl 6
cout &lt;&lt; k.tu_rein(cf,6) &lt;&lt; endl;//liefert richtige anzahl 6 (ich tue 6 rein)

k.showall();
</code></pre>
<p>Dies liefertirgendwie</p>
<pre><code>Colaflaschen: 6 noch Platz, 0 drinne
 Unser Kuehlschrank ist offen
0
6
6
 Colaflaschen: 6 noch Platz, 0 drinne  // hier muesste aber 0 noch platz und 6 drinne stehen
</code></pre>
<p>Bin drum und dran das einfach hinzuschmeissen. 12 h daran schon gesessen und nichts leuchtet irgendwie ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725712</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 17:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 20:02:16 GMT]]></title><description><![CDATA[<p>Da du von aussen ohnehin voll und ganz auf das Colafach zugreifen willst mach es doch einfach als public member!</p>
<p>Ansonsten nimmst du den getter: Cola_Fach&amp; get_Cola_Fach(); Jedoch macht das wie Nexus schon schrieb ned allzu viel Sinn ...</p>
<pre><code class="language-cpp">class Kuehlschrank
{
/* bla bla blub */
public:
    Cola_Fach m_colafach;
/*blub bla bla*/
};
</code></pre>
<p>oder nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725764</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Fri, 12 Jun 2009 20:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 20:36:47 GMT]]></title><description><![CDATA[<p>Zu dem Problem mit der unerwarteten Ausgabe: Solchen Fehlern kommst du am besten auf die Spur, indem du den Debugger benutzt und schrittweise den Programm durchgehst. Dann überprüfst du jeweils die Variablen und vergleichst sie mit deiner Vorstellung, wie es sein sollte. So findest du Abweichungen relativ schnell heraus.</p>
<p>Alternativ kannst du das auch mit Debugging-Ausgaben (z.B. <code>std::cout</code> ) hinkriegen. Aber der Debugger ist schon sehr mächtig, sich damit auseinanderzusetzen kann sich schnell lohnen. Zudem brauchst du dabei nicht deinen Code zu ändern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725780</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 12 Jun 2009 20:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 20:37:09 GMT]]></title><description><![CDATA[<p>Pigeon schrieb:</p>
<blockquote>
<p>//Edit 1: Soweit ich weis ist *.cc und *.hh völlig legitim! <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="🙂"
    /> Ich nutze ganz langweilig *.cpp und *.h</p>
</blockquote>
<p>.cpp mochte ich noch nie, das erinnert mich immer an cpp den C-Präprozessor. &quot;.C&quot; ist für C++ auch noch üblich, man sollte dazu sagen auf UNIX Systemen. Auf einem DOS hätte das reichlich Probleme verursacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725783</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Fri, 12 Jun 2009 20:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 20:43:56 GMT]]></title><description><![CDATA[<p>~john schrieb:</p>
<blockquote>
<p>.cpp mochte ich noch nie, das erinnert mich immer an cpp den C-Präprozessor.</p>
</blockquote>
<p>Deswegen nimmst du die Endung nicht? <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>
<p>Ich finde den Präprozessor sehr interessant. Aber davon abgesehen ist .cpp wohl die am meisten verbreitete Endung für C++-Implementierungsdateien. Ich nehme selber immer .cpp, .hpp und .inl bei Template-Implementierungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725793</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 12 Jun 2009 20:43:56 GMT</pubDate></item><item><title><![CDATA[Reply to ERLEDIGT : Anfaengerfehler: Vererbeung - Objekt uebernimmt Aenderung nicht on Fri, 12 Jun 2009 21:14:02 GMT]]></title><description><![CDATA[<p>DAnke an alle,</p>
<p>ich habe es nun einfach public gemacht, wie ihr gesagt habt. macht tatsaechlich gleich viel Sinn. nebenbei habe ich noch den Umgang mit dem Visual 2008 Debugger gelernt.. also breakpoints usw. immerhin ich denke das wird viele Fragen in Zukunft vermeiden.</p>
<p>Guten Abend</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1725817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1725817</guid><dc:creator><![CDATA[ancestral-knowledge]]></dc:creator><pubDate>Fri, 12 Jun 2009 21:14:02 GMT</pubDate></item></channel></rss>