<?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[Konstruktor wird nicht erkannt]]></title><description><![CDATA[<p>Hi,</p>
<p>um mit der objektorientierten Programmierung anzufangen habe ich mir ein kleines Programm geschrieben, dass allerdings beim Anlegen eines Objektes der Klasse Mensch den Konstruktor nicht findet/aufruft.</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;mensch.h&quot;

int main(){

	{
		Mensch person(10);
		//person.printAge( );
	}

	return 0;
}
</code></pre>
<p>mensch.h</p>
<pre><code class="language-cpp">#ifndef _MENSCH_H_
#define _MENSCH_H_

#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

class Mensch{
	private:
		unsigned int alter;
	public:
		Mensch(int);
		~Mensch();
		void printAge();	
};

void Mensch::printAge(){
	cout &lt;&lt; &quot;\nAlter: &quot; &lt;&lt; alter;
}

Mensch::Mensch(int i){
	cout &lt;&lt; &quot;Objekte angelegt&quot;;
}

Mensch::~Mensch(){
	cout &lt;&lt; &quot;Objekte zerrstört&quot;;
}

#endif
</code></pre>
<p>Folgende Fehlermeldung erzeugt der Compiler:</p>
<pre><code>g++ -Wall -o &quot;main&quot; &quot;main.cpp&quot; (im Verzeichnis: /home/marcel/C++_Programming)
main.cpp: In function ‘int main()’:
main.cpp:7: error: no matching function for call to ‘Mensch::Mensch(int)’
mensch.h:22: note: candidates are: Mensch::Mensch()
mensch.h:9: note:                 Mensch::Mensch(const Mensch&amp;)
Kompilierung fehlgeschlagen.
</code></pre>
<p>Woran könnte das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273100/konstruktor-wird-nicht-erkannt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 11:36:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273100.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Aug 2010 09:11:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 09:11:21 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>um mit der objektorientierten Programmierung anzufangen habe ich mir ein kleines Programm geschrieben, dass allerdings beim Anlegen eines Objektes der Klasse Mensch den Konstruktor nicht findet/aufruft.</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;mensch.h&quot;

int main(){

	{
		Mensch person(10);
		//person.printAge( );
	}

	return 0;
}
</code></pre>
<p>mensch.h</p>
<pre><code class="language-cpp">#ifndef _MENSCH_H_
#define _MENSCH_H_

#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

class Mensch{
	private:
		unsigned int alter;
	public:
		Mensch(int);
		~Mensch();
		void printAge();	
};

void Mensch::printAge(){
	cout &lt;&lt; &quot;\nAlter: &quot; &lt;&lt; alter;
}

Mensch::Mensch(int i){
	cout &lt;&lt; &quot;Objekte angelegt&quot;;
}

Mensch::~Mensch(){
	cout &lt;&lt; &quot;Objekte zerrstört&quot;;
}

#endif
</code></pre>
<p>Folgende Fehlermeldung erzeugt der Compiler:</p>
<pre><code>g++ -Wall -o &quot;main&quot; &quot;main.cpp&quot; (im Verzeichnis: /home/marcel/C++_Programming)
main.cpp: In function ‘int main()’:
main.cpp:7: error: no matching function for call to ‘Mensch::Mensch(int)’
mensch.h:22: note: candidates are: Mensch::Mensch()
mensch.h:9: note:                 Mensch::Mensch(const Mensch&amp;)
Kompilierung fehlgeschlagen.
</code></pre>
<p>Woran könnte das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946438</guid><dc:creator><![CDATA[........]]></dc:creator><pubDate>Tue, 31 Aug 2010 09:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 09:20:11 GMT]]></title><description><![CDATA[<p>Das <code>mensch.h</code> das Du da einbindest, ist nicht das richtige. Es gibt noch ein zweites <code>mensch.h</code> irgendwo im Include-Pfade, und das hat keinen passenden Konstruktor.</p>
<p>Außerdem:</p>
<ul>
<li>Kein <code>using namespace std</code> in Header-Dateien.</li>
<li>Wenn Du die Methoden außerhalb der Klasse aber innerhalb des Headers definierst, sollten diese <code>inline</code> sein, sonst wirst Du schnell die ODR (google) verletzen. Zum Üben ist es aber besser, die Klasse in <code>.h</code> und <code>.cpp</code> aufzuteilen.</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1946443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946443</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 31 Aug 2010 09:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 09:41:14 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort.</p>
<p>Die Deklarationen und Definitionen habe ich eigentlich getrennt in mensch.h und mensch.cpp. Zur Vereinfachung habe ich mal alles in eine Header Datei gepackt.</p>
<p>Ich habe jetzt alles zu einer Datei zusammengefasst, und damit funktioniert es.<br />
Nur wenn ich jetzt einen Standardkonstruktor defniere und ein Objekt anlege, bekomme ich 2 verschiedene Ergebnisse.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

class Mensch{
	private:
		unsigned int alter;
	public:
		Mensch();
		~Mensch();
		void printAge();	
};

void Mensch::printAge(){
	cout &lt;&lt; &quot;\nAlter: &quot; &lt;&lt; alter;
}

Mensch::Mensch(){
	cout &lt;&lt; &quot;Objekte angelegt\n&quot;;
}

Mensch::~Mensch(){
	cout &lt;&lt; &quot;Objekte zerrstört\n&quot;;
}

int main(){

	{
		Mensch person();
		//person.printAge( );
	}

	return 0;
}
</code></pre>
<p>Lege ich das Objekt mit &quot;Mensch person;&quot; an, wird der Konstruktor aufgerufen.<br />
Mit &quot;Mensch person();&quot; nicht.</p>
<p>Wie hängt das zusammen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946453</guid><dc:creator><![CDATA[Sawyer89]]></dc:creator><pubDate>Tue, 31 Aug 2010 09:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 09:58:14 GMT]]></title><description><![CDATA[<p>Was macht denn dein Konstruktor überhaupt?<br />
Er initialisiert deine Membervariable Alter ja gar nicht.</p>
<p>Der müsste so aussehen:</p>
<pre><code class="language-cpp">Mensch::Mensch( int age ):
    alter( age )
{
    cout &lt;&lt; &quot;Objekt wurde erfolgreich mit dem Alter &quot; &lt;&lt; age &lt;&lt; &quot; erstellt!&quot; &lt;&lt; endl;
}
</code></pre>
<p>Jetzt initialisierst du deine Membervariable alter auch und zwar über die Elementinitialisierungsliste, so wie man das normal auch machen sollte.</p>
<p>EDIT:<br />
Sehe grad dass mein Post erst nach deinem da war.<br />
Also meine Antwort hatte sich auf deinen ersten Post bezoegen.<br />
Zu deinem 2. Post, wie mein Nachredner auch schon sagte, du musst auch</p>
<pre><code class="language-cpp">Mensch person;
</code></pre>
<p>schreiben, da</p>
<pre><code class="language-cpp">Mensch person();
</code></pre>
<p>eine Funktionsdeklaration ist.</p>
<p>Die Klammer kommt nur bei einem dynamischen Reservieren hin:</p>
<pre><code class="language-cpp">Mensch* p = new Mensch();
</code></pre>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946454</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 31 Aug 2010 09:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 09:45:54 GMT]]></title><description><![CDATA[<p>Sawyer89 schrieb:</p>
<blockquote>
<p>Lege ich das Objekt mit &quot;Mensch person;&quot; an, wird der Konstruktor aufgerufen.<br />
Mit &quot;Mensch person();&quot; nicht.</p>
</blockquote>
<p>Mensch person(); ist eine Funktionsdeklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946456</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 31 Aug 2010 09:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 12:02:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Mensch person;
</code></pre>
<pre><code class="language-cpp">Mensch *person = new Mensch();
</code></pre>
<p>in beiden Fällen ist 'person' die Variable und Mensch die Klasse. Der Konstruktor in deiner Klasse heisst ja auch</p>
<pre><code class="language-cpp">Mensch()
</code></pre>
<p>also macht</p>
<pre><code class="language-cpp">person()
</code></pre>
<p>keinen Sinn (ausser du hast eine Methode deklariert die so heisst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946529</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Tue, 31 Aug 2010 12:02:04 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 12:26:52 GMT]]></title><description><![CDATA[<p>antialias schrieb:</p>
<blockquote>
<p>Der Konstruktor in deiner Klasse heisst ja auch</p>
<pre><code class="language-cpp">Mensch()
</code></pre>
<p>also macht</p>
<pre><code class="language-cpp">person()
</code></pre>
<p>keinen Sinn (ausser du hast eine Methode deklariert die so heisst)</p>
</blockquote>
<p>Die Begründung ist etwas wirr. Man könnte auch sagen:</p>
<blockquote>
<p>Der Konstruktor in einer anderen Klasse heisst ja auch</p>
<pre><code class="language-cpp">Klasse(int)
</code></pre>
<p>also macht</p>
<pre><code class="language-cpp">objekt(32)
</code></pre>
<p>keinen Sinn (ausser du hast eine Methode deklariert die so heisst)</p>
</blockquote>
<p>und damit falsch liegen, wenn es um die Deklaration</p>
<pre><code class="language-cpp">Klasse objekt(32);
</code></pre>
<p>geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946537</guid><dc:creator><![CDATA[Richtigsteller]]></dc:creator><pubDate>Tue, 31 Aug 2010 12:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 12:30:13 GMT]]></title><description><![CDATA[<p>Selbst dann würde</p>
<pre><code class="language-cpp">Mensch person()
</code></pre>
<p>keinen Sinn machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946540</guid><dc:creator><![CDATA[antialias]]></dc:creator><pubDate>Tue, 31 Aug 2010 12:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor wird nicht erkannt on Tue, 31 Aug 2010 12:34:54 GMT]]></title><description><![CDATA[<p>antialias schrieb:</p>
<blockquote>
<p>Selbst dann würde</p>
<pre><code class="language-cpp">Mensch person()
</code></pre>
<p>keinen Sinn machen.</p>
</blockquote>
<p>Nein, du verstehst glaube ich nicht was &quot;Richtigsteller&quot; dir sagen wollte.<br />
Als Beispiel er hat nen Konstruktor</p>
<pre><code class="language-cpp">Mensch( int )
</code></pre>
<p>so dann würde laut deiner Begründung</p>
<pre><code class="language-cpp">Mensch person(4)
</code></pre>
<p>auch keinen Sinn geben, was aber natürlich einen Sinn ergibt und vollkommen richtig ist <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>Verstehst du?</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946546</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 31 Aug 2010 12:34:54 GMT</pubDate></item></channel></rss>