<?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[Standardkonstruktor]]></title><description><![CDATA[<p>Kann mir bitte mal jemand erklären waraum folgendes Programm nicht funktioniert:</p>
<pre><code>#include&lt;iostream&gt;
using namespace std;

class Motor
{
	int ps;
	int kw;
public:
	Motor(int p,int k) {ps=p; kw=k;}
	void getdaten() {cout&lt;&lt;ps&lt;&lt;endl; cout&lt;&lt;kw&lt;&lt;endl;}
	virtual ~Motor() {}
};

class Auto:public Motor
{
protected:
	char* name;
	Motor motor;
public:
	Auto(char* n,int p,int k):motor(p,k) {name=n;}
	void getdaten() {cout&lt;&lt;name&lt;&lt;endl; motor.getdaten();}
	virtual ~Auto() {}
};

class Sportwagen:public Auto
{
	bool extras;
public:
	Sportwagen(bool e,char* n,int p,int k):Auto(n,p,k) {extras=e};
	void getdaten();
};

inline void Sportwagen::getdaten()
{
	Auto::getdaten();
	if(extras) cout&lt;&lt;&quot;Mit Extras&quot;&lt;&lt;endl; else cout&lt;&lt;&quot;Keine Extras&quot;&lt;&lt;endl;
}

Sportwagen Porsche(true,&quot;911&quot;,200,111);

int main()
{
	Porsche.getdaten();
	return 0;
}
</code></pre>
<p>Der Fehler liegt hier:</p>
<p>Auto(char* n,int p,int k):motor(p,k) {name=n;}</p>
<p>-&gt; Motor' : Kein geeigneter Standardkonstruktor verfuegbar</p>
<p>Klar das kein Standardkonstruktur zur Verfügung steht, denn ich habe ja selbst einen Konstruktur in der Klasse Motor aufgesetzt,,und um in der Klasse das eingebettete Objekt Motor zu erzeugen, muss man den Konstruktor von Motor in der Konstruktorliste von Auto aufrufen,,wieso funktioniert das nicht,,Der Konstruktor von Motor wird doch mit 2 INT-Werten aufgerufen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124281/standardkonstruktor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 21:04:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124281.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2005 09:28:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standardkonstruktor on Wed, 26 Oct 2005 09:28:04 GMT]]></title><description><![CDATA[<p>Kann mir bitte mal jemand erklären waraum folgendes Programm nicht funktioniert:</p>
<pre><code>#include&lt;iostream&gt;
using namespace std;

class Motor
{
	int ps;
	int kw;
public:
	Motor(int p,int k) {ps=p; kw=k;}
	void getdaten() {cout&lt;&lt;ps&lt;&lt;endl; cout&lt;&lt;kw&lt;&lt;endl;}
	virtual ~Motor() {}
};

class Auto:public Motor
{
protected:
	char* name;
	Motor motor;
public:
	Auto(char* n,int p,int k):motor(p,k) {name=n;}
	void getdaten() {cout&lt;&lt;name&lt;&lt;endl; motor.getdaten();}
	virtual ~Auto() {}
};

class Sportwagen:public Auto
{
	bool extras;
public:
	Sportwagen(bool e,char* n,int p,int k):Auto(n,p,k) {extras=e};
	void getdaten();
};

inline void Sportwagen::getdaten()
{
	Auto::getdaten();
	if(extras) cout&lt;&lt;&quot;Mit Extras&quot;&lt;&lt;endl; else cout&lt;&lt;&quot;Keine Extras&quot;&lt;&lt;endl;
}

Sportwagen Porsche(true,&quot;911&quot;,200,111);

int main()
{
	Porsche.getdaten();
	return 0;
}
</code></pre>
<p>Der Fehler liegt hier:</p>
<p>Auto(char* n,int p,int k):motor(p,k) {name=n;}</p>
<p>-&gt; Motor' : Kein geeigneter Standardkonstruktor verfuegbar</p>
<p>Klar das kein Standardkonstruktur zur Verfügung steht, denn ich habe ja selbst einen Konstruktur in der Klasse Motor aufgesetzt,,und um in der Klasse das eingebettete Objekt Motor zu erzeugen, muss man den Konstruktor von Motor in der Konstruktorliste von Auto aufrufen,,wieso funktioniert das nicht,,Der Konstruktor von Motor wird doch mit 2 INT-Werten aufgerufen?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900949</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Wed, 26 Oct 2005 09:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to Standardkonstruktor on Wed, 26 Oct 2005 09:36:19 GMT]]></title><description><![CDATA[<p>AJ_Styles schrieb:</p>
<blockquote>
<pre><code>class Auto:public Motor
{
protected:
	char* name;
	Motor motor;
public:
	Auto(char* n,int p,int k):motor(p,k) {name=n;}
	void getdaten() {cout&lt;&lt;name&lt;&lt;endl; motor.getdaten();}
	virtual ~Auto() {}
};
</code></pre>
</blockquote>
<p>Das ist Humbug - bzw. du hast zwei Subobjekte vom Typ &quot;Motor&quot; in deinem Auto: einmal die Member-Variable &quot;motor&quot; (die vom Konstruktor korrekt initialisiert wird) und einmal die Basisklasse Motor (für die ein Default-Konstruktor gesucht wird). Eine von beiden ist überflüssig (ich würde spontan sagen, an der Stelle passt Vererbung nicht wirklich - oder IST ein Auto ein Motor?).</p>
<p>PS: Und die Methode &quot;Sportwagen::getdaten()&quot; solltest du auch innerhalb der Klassendefinition erwähnen <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/900956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900956</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 26 Oct 2005 09:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Standardkonstruktor on Wed, 26 Oct 2005 09:41:48 GMT]]></title><description><![CDATA[<p>mal was zum Design: ein Auto ist kein Motor, ein Auto hat einen Motor, ergo ist hier Vererbung der falsche Ansatz</p>
<p>edit: waa erst lesen^^ sehe CStoll hat das ja schon angesprochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900962</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Wed, 26 Oct 2005 09:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to Standardkonstruktor on Wed, 26 Oct 2005 09:44:13 GMT]]></title><description><![CDATA[<p>Da war einer schneller <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>an der Stelle passt Vererbung nicht wirklich - oder IST ein Auto ein Motor?</p>
</blockquote>
<p>Da kann ich CStoll zustimmen, als eingebettetes Objekt macht sich Motor sicher besser.<br />
getDaten() deines Autos sollte vielleicht auch eher virtuell sein.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900965</guid><dc:creator><![CDATA[pZy]]></dc:creator><pubDate>Wed, 26 Oct 2005 09:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to Standardkonstruktor on Wed, 26 Oct 2005 09:51:17 GMT]]></title><description><![CDATA[<p>Natürlich <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>Danke an alle!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/900975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/900975</guid><dc:creator><![CDATA[AJ_Styles]]></dc:creator><pubDate>Wed, 26 Oct 2005 09:51:17 GMT</pubDate></item></channel></rss>