<?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[Vorwärtsdeklaration und new Problem]]></title><description><![CDATA[<p>Warum lässt sich folgendes nicht kompilieren?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;parent.h&quot;
#include &quot;child.h&quot;

using namespace std;
int main()
{

}
</code></pre>
<pre><code class="language-cpp">#ifndef _PARENT_
#define _PARENT_

#include &quot;child.h&quot;

class Child;
class Parent
{
private:
	Child* child;

public:
	Parent(){}
};

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef _CHILD_
#define _CHILD_

#include &quot;parent.h&quot;

class Parent;
class Child
{
private:
	Parent* parent;

public:
	Child(){
	   Parent* test = new Parent; 
    }
};

#endif
</code></pre>
<pre><code>error C2512: 'Parent': Kein geeigneter Standardkonstruktor verfügbar
</code></pre>
<p>wenn ich stattdessen Child* test = new Child; mache, geht es...<br />
Und nur Parent* test; geht auch...</p>
<p>aber ich brauch diesen new</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288942/vorwärtsdeklaration-und-new-problem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 16:16:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288942.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Jun 2011 16:13:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:13:14 GMT]]></title><description><![CDATA[<p>Warum lässt sich folgendes nicht kompilieren?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;parent.h&quot;
#include &quot;child.h&quot;

using namespace std;
int main()
{

}
</code></pre>
<pre><code class="language-cpp">#ifndef _PARENT_
#define _PARENT_

#include &quot;child.h&quot;

class Child;
class Parent
{
private:
	Child* child;

public:
	Parent(){}
};

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef _CHILD_
#define _CHILD_

#include &quot;parent.h&quot;

class Parent;
class Child
{
private:
	Parent* parent;

public:
	Child(){
	   Parent* test = new Parent; 
    }
};

#endif
</code></pre>
<pre><code>error C2512: 'Parent': Kein geeigneter Standardkonstruktor verfügbar
</code></pre>
<p>wenn ich stattdessen Child* test = new Child; mache, geht es...<br />
Und nur Parent* test; geht auch...</p>
<p>aber ich brauch diesen new</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083931</guid><dc:creator><![CDATA[BrainThinking]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:19:13 GMT]]></title><description><![CDATA[<p>Wenn zwei Header sich gegenseitig einbinden, endet das regelmäßig in einer Katastrophe. In deinem Fall steht nach der Verarbeitung durch den Präprozessor die Definition der Child-Klasse vor der Parent-Klasse - und dadurch kennt der Compiler dort nur die Forward-Deklaration.</p>
<p>Beste Lösung: Bring deine include-Anweisungen in Ordnung - und trenne die Klassendefinitionen und die Methoden-Implementation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083934</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:35:09 GMT]]></title><description><![CDATA[<p>okay ich hab nach allen Möglichkeiten versucht und habe nur eine Möglichkeit gefunden wenn ich #include &quot;parent.h&quot; in main lösche</p>
<p>Das mit Trennung von Klassendefinition und Methoden-Implemention scheint dem Compiler irrelevant zu sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083943</guid><dc:creator><![CDATA[BrainThinking]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:38:59 GMT]]></title><description><![CDATA[<p>aber wenn ich das hier in parent.h datei hinzufüge:</p>
<pre><code class="language-cpp">Parent(){Child* test = new Child;}
</code></pre>
<p>hab ich wieder ein Problem...</p>
<p>das ist so ein wirrwarr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083946</guid><dc:creator><![CDATA[BrainThinking]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:42:11 GMT]]></title><description><![CDATA[<p>Wie gesagt, trenne die Definition und Implementierung - und damit meinte ich nicht nur, die Implementierung unter die Klasse zu schreiben.</p>
<p>PS: Wenn Parent und Child sich gegenseitig per new erzeugen, bekommst du etwas größere Probleme <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2083949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083949</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:42:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration und new Problem on Sat, 25 Jun 2011 16:48:15 GMT]]></title><description><![CDATA[<p>okay tatsächlich, erst mit cpp und h scheint es zu gehen</p>
<p>ich hoffe mal dass ich die größeren Probleme nicht bekomme. Zumindest werden die aus meiner komplexeren code nicht so direkt gegenseitig mit new erzeugt.<br />
Hab mein Problem hier stark reduziert demonstriert.</p>
<p>danke dir</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2083951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2083951</guid><dc:creator><![CDATA[BrainThinking]]></dc:creator><pubDate>Sat, 25 Jun 2011 16:48:15 GMT</pubDate></item></channel></rss>