<?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[Aufruf überladener Methode der Basisklasse]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein Problem.<br />
In der Basisklasse &quot;bank&quot; gibt es eine Methode mit gleichem Namen und gleichem Aufruf wie in der abgeleiteten Klasse &quot;konto&quot;.</p>
<pre><code>#ifndef _KONTO_HPP_
#define _KONTO_HPP_

class bank
{
public:
	bank(string name);
	void ausgeben();
protected:
	string name;
private:
};

class konto : protected bank
{
public:
	konto(int startguthaben, string bankname);
	konto operator+(konto&amp;);
	void abheben(int betrag);
	void ausgeben();

protected:

private:

int k;

};

#endif
</code></pre>
<p>Hier noch die zugehörige cpp</p>
<pre><code>#ifndef _KONTO_HPP_
#define _KONTO_HPP_

class bank
{
public:
	bank(string name);
	void ausgeben();
protected:
	string name;
private:
};

class konto : protected bank
{
public:
	konto(int startguthaben, string bankname);
	konto operator+(konto&amp;);
	void abheben(int betrag);
	void ausgeben();

protected:

private:

int k;

};

#endif
</code></pre>
<p>Probleme entstehen in der main, wenn ich mit deklariertem Konto k1 aufrufe:<br />
&quot;k1.bank::ausgeben();&quot;</p>
<p>der compiler meldet dann: &quot;bank ist eine nicht erreichbare Basis von konto&quot;</p>
<p>Ich suche schon seit einigen Stunden nach einer Lösung, kann aber mein Problem nur mäßig in Worte fassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236169/aufruf-überladener-methode-der-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 01:24:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236169.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Mar 2009 15:40:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 15:40:07 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe ein Problem.<br />
In der Basisklasse &quot;bank&quot; gibt es eine Methode mit gleichem Namen und gleichem Aufruf wie in der abgeleiteten Klasse &quot;konto&quot;.</p>
<pre><code>#ifndef _KONTO_HPP_
#define _KONTO_HPP_

class bank
{
public:
	bank(string name);
	void ausgeben();
protected:
	string name;
private:
};

class konto : protected bank
{
public:
	konto(int startguthaben, string bankname);
	konto operator+(konto&amp;);
	void abheben(int betrag);
	void ausgeben();

protected:

private:

int k;

};

#endif
</code></pre>
<p>Hier noch die zugehörige cpp</p>
<pre><code>#ifndef _KONTO_HPP_
#define _KONTO_HPP_

class bank
{
public:
	bank(string name);
	void ausgeben();
protected:
	string name;
private:
};

class konto : protected bank
{
public:
	konto(int startguthaben, string bankname);
	konto operator+(konto&amp;);
	void abheben(int betrag);
	void ausgeben();

protected:

private:

int k;

};

#endif
</code></pre>
<p>Probleme entstehen in der main, wenn ich mit deklariertem Konto k1 aufrufe:<br />
&quot;k1.bank::ausgeben();&quot;</p>
<p>der compiler meldet dann: &quot;bank ist eine nicht erreichbare Basis von konto&quot;</p>
<p>Ich suche schon seit einigen Stunden nach einer Lösung, kann aber mein Problem nur mäßig in Worte fassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678139</guid><dc:creator><![CDATA[althippie]]></dc:creator><pubDate>Wed, 11 Mar 2009 15:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 15:53:52 GMT]]></title><description><![CDATA[<p>Nimm bitte in Zukunft die [cpp]- anstelle der [code]-Tags, da gibt es Syntaxhighlighting. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>althippie schrieb:</p>
<blockquote>
<p>In der Basisklasse &quot;bank&quot; gibt es eine Methode mit gleichem Namen und gleichem Aufruf wie in der abgeleiteten Klasse &quot;konto&quot;.</p>
</blockquote>
<p>Daran gefallen mir zwei Dinge nicht. Erstens ist es fragwürdig, ein Konto von einer Bank abzuleiten. Ist ein Konto eine Bank? Wohl eher nicht. Mach darum separate Klassen und benutze Konto in Bank als Membervariable. Das zweite ist das Wort &quot;Aufruf&quot;. Du meinst wohl eher Funktionstyp (Signatur und Rückgabetyp der Funktion). Aufruf sagt man eher beim Aufrufen der Funktion. <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>Dein Problem besteht darin, dass du versuchst, über die abgeleitete Klasse auf eine Memberfunktion der Basisklasse zuzugreifen. Diese wurde aber als <code>protected</code> vererbt, also sind deren Member <code>protected</code> . Aber normalerweise besteht sowieso kein Anlass zum expliziten Aufrufen einer Basisklassenfunktion - welchen Sinn hätte sonst die Funktion in der abgeleiteten Klasse?</p>
<p>Den letzten Absatz habe ich nur geschrieben, damit du den Fehler erkennst und ihn in anderen Situationen nicht mehr machst. Aber wie ich anfänglich erwähnt habe, solltest du <code>konto</code> nicht von <code>bank</code> ableiten, das sind zwei eigenständige Klassen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678149</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 11 Mar 2009 15:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 15:54:02 GMT]]></title><description><![CDATA[<p>hiho</p>
<p>das liegt daran, dass du eine protected Vererbung machst,<br />
und du somit nur innerhalb der klasse &quot;bank&quot; auf die Funktion &quot;ausgeben&quot; der klasse &quot;konto&quot; zugreifen kannst,<br />
und nicht von außerhalb.</p>
<p>D.h. du müsstest eine public Vererbung machen.</p>
<p>MFG Dweb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678150</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 11 Mar 2009 15:54:02 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 15:56:35 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>D.h. du müsstest eine public Vererbung machen.</p>
</blockquote>
<p>Nein, keine Vererbung. <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/1678151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678151</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 11 Mar 2009 15:56:35 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 16:05:05 GMT]]></title><description><![CDATA[<p>Geil man, danke man.</p>
<p>KLappt super!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678160</guid><dc:creator><![CDATA[althippie]]></dc:creator><pubDate>Wed, 11 Mar 2009 16:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Wed, 11 Mar 2009 16:19:21 GMT]]></title><description><![CDATA[<p>althippie schrieb:</p>
<blockquote>
<p>KLappt super!</p>
</blockquote>
<p>Hast du meine Einwände berücksichtigt? Wenn nicht, brauchst du dich nicht zu wundern, falls du früher oder später auf erhebliche Designprobleme stossen wirst. Nur so nebenbei...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678179</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 11 Mar 2009 16:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Aufruf überladener Methode der Basisklasse on Thu, 12 Mar 2009 09:53:37 GMT]]></title><description><![CDATA[<p>Ich muss mich Nexus da voll und ganz anschliessen. Du hast die Grundzüge der OO noch nicht durchdrungen. Hier liegt eine &quot;hat ein&quot; Beziehung vor, d.h. ein Konto ist das Attribut einer Bank und damit Membervariable der Klasse 'Bank'. Vererbung erfordert immer eine &quot;ist ein&quot; Bezeihung. Siehe auch <a href="http://de.wikipedia.org/wiki/Vererbung_(Programmierung)" rel="nofollow">http://de.wikipedia.org/wiki/Vererbung_(Programmierung)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678536</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Thu, 12 Mar 2009 09:53:37 GMT</pubDate></item></channel></rss>