<?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[Unvollständiger Typ]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe die zwei Klassen vorgegeben (wie unten schemenhaft dargestellt) und möchte gerne in Klasse b eine Variablen vom Typ c mit Paramaterübergabe erstellen(wie in Funktion foo).<br />
Der Compiler gibt mir aber immer folgenden Fehler:</p>
<pre><code>Fehler: Variable »c tmp« hat Initialisierung, aber unvollständigen Typ
</code></pre>
<p>Warscheinlich ist das nur ein kleiner Fehler ich komme aber einfach nicht drauf <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>
<pre><code class="language-cpp">class b;
class c;

class b{
 public:
 /////////////
 void foo(){
  c tmp(1);
 }
 /////////////
};

class c{
 int n;
 public:
 c(int n): n(n){};
};

int main(){

 return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/297554/unvollständiger-typ</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 10:16:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297554.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jan 2012 19:14:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unvollständiger Typ on Sun, 01 Jan 2012 19:14:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe die zwei Klassen vorgegeben (wie unten schemenhaft dargestellt) und möchte gerne in Klasse b eine Variablen vom Typ c mit Paramaterübergabe erstellen(wie in Funktion foo).<br />
Der Compiler gibt mir aber immer folgenden Fehler:</p>
<pre><code>Fehler: Variable »c tmp« hat Initialisierung, aber unvollständigen Typ
</code></pre>
<p>Warscheinlich ist das nur ein kleiner Fehler ich komme aber einfach nicht drauf <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>
<pre><code class="language-cpp">class b;
class c;

class b{
 public:
 /////////////
 void foo(){
  c tmp(1);
 }
 /////////////
};

class c{
 int n;
 public:
 c(int n): n(n){};
};

int main(){

 return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2162697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162697</guid><dc:creator><![CDATA[Question]]></dc:creator><pubDate>Sun, 01 Jan 2012 19:14:12 GMT</pubDate></item><item><title><![CDATA[Reply to Unvollständiger Typ on Sun, 01 Jan 2012 19:16:29 GMT]]></title><description><![CDATA[<p>Wenn du <code>c</code> instanziierst (d.h. Instanzen der Klasse erstellst), muss die Klasse ein vollständiger Typ sein. Die Definition muss also zum Zeitpunkt der Verwendung vorliegen.</p>
<p>Das kannst du umgehen, indem du entweder <code>c</code> früher definierst oder <code>b::foo()</code> in Deklaration und Definition aufteilst, wobei letztere nach <code>c</code> auftreten muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162698</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 01 Jan 2012 19:16:29 GMT</pubDate></item><item><title><![CDATA[Reply to Unvollständiger Typ on Sun, 01 Jan 2012 19:22:54 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort, da ich nicht die Möglichkeit habe c vor b zu definieren werde ich die Klassen in Deklaration und Definition aufteilen müssen.</p>
<p>Funktioniert es dann auch, dass ich in b c instanziiere(wie in dem Beispiel) aber auch gleichzeitig in c b instanziiere ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162700</guid><dc:creator><![CDATA[Question]]></dc:creator><pubDate>Sun, 01 Jan 2012 19:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to Unvollständiger Typ on Sun, 01 Jan 2012 19:27:10 GMT]]></title><description><![CDATA[<p>Wenn du mit &quot;in b&quot; &quot;in Methodendefinitionen von b&quot; meinst: Ja.<br />
Wenn du &quot;in der Klassendefinition von b&quot; meinst: Nein.</p>
<p>Die Aufteilung von Funktionen in Deklaration (im Header) und Definition (in Implementierungsdatei) ist in C++ üblich und sinnvoll. Ich würde es grundsätzlich auch tun, wenn ich nicht muss, da man sich so unnötige Abhängigkeiten spart. Der Code im Header wird nämlich kleiner, und oft kann man sogar <code>#include</code> s erst in der .cpp-Datei verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162703</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 01 Jan 2012 19:27:10 GMT</pubDate></item><item><title><![CDATA[Reply to Unvollständiger Typ on Sun, 01 Jan 2012 19:31:45 GMT]]></title><description><![CDATA[<p>Super jetzt funktioniert es.<br />
(Mit &quot;in b&quot; meinte ich in Methodendefinitionen, sollte mich klarer ausdrücken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> )</p>
<p>Danke nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2162706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2162706</guid><dc:creator><![CDATA[Question]]></dc:creator><pubDate>Sun, 01 Jan 2012 19:31:45 GMT</pubDate></item></channel></rss>