<?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[Frage zur OOP]]></title><description><![CDATA[<p>Folgendes Problem:<br />
Ich hab eine Basisklasse Basis, dann 2 Klassen &quot;read&quot; and &quot;write&quot; die von dieser Klasse erben. Jetzt will ich die Beiden wieder zusammenfügen, indem ich eine Neue Klasse erstelle, die von den Beiden erbt. Also so:</p>
<pre><code class="language-cpp">class basis{
public:
basis(string b){}
~basis(){}
}
class read : public basis{
public:
read(string b) : basis(b){}
~read(){}
}
class write : public basis{
public:
write(string b) : basis(b){}
~write(){}
}
class A : public read, public write{
private:
public:
	A(string b) : read(b),write(b){}
	~A(){}
};
</code></pre>
<p>Es würde zwar so funktionieren, aber der Konstruktor von der Klasse Basis wird 2mal aufgerufen, und ich glaube mal das dass keine gute Lösung ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Wie mach ich das besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256477/frage-zur-oop</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 08:06:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256477.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Dec 2009 13:43:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zur OOP on Sun, 13 Dec 2009 13:43:00 GMT]]></title><description><![CDATA[<p>Folgendes Problem:<br />
Ich hab eine Basisklasse Basis, dann 2 Klassen &quot;read&quot; and &quot;write&quot; die von dieser Klasse erben. Jetzt will ich die Beiden wieder zusammenfügen, indem ich eine Neue Klasse erstelle, die von den Beiden erbt. Also so:</p>
<pre><code class="language-cpp">class basis{
public:
basis(string b){}
~basis(){}
}
class read : public basis{
public:
read(string b) : basis(b){}
~read(){}
}
class write : public basis{
public:
write(string b) : basis(b){}
~write(){}
}
class A : public read, public write{
private:
public:
	A(string b) : read(b),write(b){}
	~A(){}
};
</code></pre>
<p>Es würde zwar so funktionieren, aber der Konstruktor von der Klasse Basis wird 2mal aufgerufen, und ich glaube mal das dass keine gute Lösung ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Wie mach ich das besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821952</guid><dc:creator><![CDATA[*MOP*]]></dc:creator><pubDate>Sun, 13 Dec 2009 13:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur OOP on Sun, 13 Dec 2009 13:51:05 GMT]]></title><description><![CDATA[<p>Virtuell vererben.<br />
<a href="http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Vererbung#Virtuelle_Vererbung" rel="nofollow">http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Vererbung#Virtuelle_Vererbung</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821953</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 13 Dec 2009 13:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur OOP on Sun, 13 Dec 2009 14:02:46 GMT]]></title><description><![CDATA[<p>Sieht mir stark danach aus, als ob da sowieso vielzuviel geerbt wird. <a href="http://en.wikipedia.org/wiki/Has-a" rel="nofollow">http://en.wikipedia.org/wiki/Has-a</a> vs <a href="http://en.wikipedia.org/wiki/Is-a" rel="nofollow">http://en.wikipedia.org/wiki/Is-a</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821960</guid><dc:creator><![CDATA[0mx]]></dc:creator><pubDate>Sun, 13 Dec 2009 14:02:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur OOP on Sun, 13 Dec 2009 14:29:27 GMT]]></title><description><![CDATA[<p>Wir wollen ja schliesslich nicht, dass es dir wie <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-75672.html" rel="nofollow">Herrn Bebel</a> ergeht. :xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1821968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821968</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Dec 2009 14:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zur OOP on Sun, 13 Dec 2009 15:53:33 GMT]]></title><description><![CDATA[<p>Danke schonmal :xmas1:<br />
Hab die Klassen &quot;write&quot; und &quot;read&quot; jetzt virtuell von der Basisklasse erben lassen:</p>
<pre><code class="language-cpp">lass read : public virtual basis{
public:
read(string b) : basis(b){}
~read(){}
}
class write : public virtual basis{
public:
write(string b) : basis(b){}
~write(){}
}
</code></pre>
<p>Jetzt kommt aber hier ein Compilerfehler: &quot;error C2512: Kein geeigneter Standardkonstruktor verfügbar&quot; im Konstruktor</p>
<pre><code class="language-cpp">class A: public read, public write{
private:
public:
	A(string path):write(path),read(path){} //Fehler
	~A(){}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1821998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1821998</guid><dc:creator><![CDATA[*MOP*]]></dc:creator><pubDate>Sun, 13 Dec 2009 15:53:33 GMT</pubDate></item></channel></rss>