<?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[error C2027: Verwendung des undefinierten Typs]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem:</p>
<p>habe ein Programm geschrieben, das logische Gatter erstellen und anschliessend verschalten kann. Das Programm besteht aus folenden hier relevanten Dateien:</p>
<p>&quot;conn.h&quot; enthält Klasse Konnektor und abgeleitete Klassen Ausgang und Eingang.<br />
&quot;gate.h&quot; enthält Klasse Gatter und abgeleitete Klassen UndGatter usw.<br />
conn.cpp und gate.cpp enthalten die dazugehörigen Funktionen. Da die meisten Kunktionen aber aus nur einer nweisung bestehen habe ich sie direkt in der Klasse als inline deklariert.</p>
<p>In der Klasse Ausgang habe ich nun eine Zugriffsfunktion auf einen STL-Vector die ich über eine Funktion in der Klasse Gatter aufrufen möchte...</p>
<p>class Ausgang : public Konnektor<br />
{<br />
//...<br />
public:<br />
/...<br />
bool istVerbunden() { return (verbList.size()); }<br />
};</p>
<p>class Gatter<br />
{<br />
protected:<br />
/..<br />
Ausgang *aus;<br />
public:<br />
/..<br />
bool ausgangVerbunden() { return aus-&gt;istVerbunden(); }<br />
};</p>
<p>Das Problem ist jetzt, das er mir sagt Typ Ausgang sei nicht definiert. Schreibe ich die Funktion ausgangVerbunden() jetzt aber in die gate.cpp geht es. Egal ob inline oder normal. Jetzt frage ich mich nur wieso. Eigentlich sollte es doch keinen Unterschied machen?</p>
<p>Die headerdateien habe ich jeweis gegenseitig includiert mit vorabdeklarationen der Klassen, daran sollte es also auch nicht liegen?</p>
<p>Bin um jeden Rat dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232637/error-c2027-verwendung-des-undefinierten-typs</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 08:18:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232637.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jan 2009 09:37:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to error C2027: Verwendung des undefinierten Typs on Sun, 25 Jan 2009 09:37:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem:</p>
<p>habe ein Programm geschrieben, das logische Gatter erstellen und anschliessend verschalten kann. Das Programm besteht aus folenden hier relevanten Dateien:</p>
<p>&quot;conn.h&quot; enthält Klasse Konnektor und abgeleitete Klassen Ausgang und Eingang.<br />
&quot;gate.h&quot; enthält Klasse Gatter und abgeleitete Klassen UndGatter usw.<br />
conn.cpp und gate.cpp enthalten die dazugehörigen Funktionen. Da die meisten Kunktionen aber aus nur einer nweisung bestehen habe ich sie direkt in der Klasse als inline deklariert.</p>
<p>In der Klasse Ausgang habe ich nun eine Zugriffsfunktion auf einen STL-Vector die ich über eine Funktion in der Klasse Gatter aufrufen möchte...</p>
<p>class Ausgang : public Konnektor<br />
{<br />
//...<br />
public:<br />
/...<br />
bool istVerbunden() { return (verbList.size()); }<br />
};</p>
<p>class Gatter<br />
{<br />
protected:<br />
/..<br />
Ausgang *aus;<br />
public:<br />
/..<br />
bool ausgangVerbunden() { return aus-&gt;istVerbunden(); }<br />
};</p>
<p>Das Problem ist jetzt, das er mir sagt Typ Ausgang sei nicht definiert. Schreibe ich die Funktion ausgangVerbunden() jetzt aber in die gate.cpp geht es. Egal ob inline oder normal. Jetzt frage ich mich nur wieso. Eigentlich sollte es doch keinen Unterschied machen?</p>
<p>Die headerdateien habe ich jeweis gegenseitig includiert mit vorabdeklarationen der Klassen, daran sollte es also auch nicht liegen?</p>
<p>Bin um jeden Rat dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651869</guid><dc:creator><![CDATA[BBSuisse]]></dc:creator><pubDate>Sun, 25 Jan 2009 09:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to error C2027: Verwendung des undefinierten Typs on Sun, 25 Jan 2009 10:50:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Die headerdateien habe ich jeweis gegenseitig includiert mit vorabdeklarationen der Klassen, daran sollte es also auch nicht liegen?</p>
</blockquote>
<p>Doch. Die Vorwärtsdeklarationen reichen nur, wenn du lediglich einen Zeiger/Referenz hast. Sobald du die Klasse selbst verwenden willst, musst du den Header inkludiere.</p>
<p>Also in gate.h sollte conn.h inkludieren. conn.h sollte nichts vom gate.h wissen müssen und somit solltest du hier nicht einmal eine Vorwärtsdeklaration brauchen. (rein vom Design her). Falls du doch irgendwie das gegenseitig brauchst, musst du alle Funktionenin die .cpp auslagern und dort die Header inkludieren, während du in den Headern (falls nötig) Vorwärtsdeklarationen hast.</p>
<p>btw.<br />
Benutz das nächste mal bitte die cpp-Tags, damit man das besser lesen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651896</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Jan 2009 10:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to error C2027: Verwendung des undefinierten Typs on Sun, 25 Jan 2009 11:30:35 GMT]]></title><description><![CDATA[<p>habe mich vielleicht etwas ungeschickt ausgedrückt. Die header sind gegenseitig includiert. Nur vor der includierung sind vorwärtsdeklarationen, sodass die Klassen beim gegenseitigen includieren bekannt sind. Verstehe schon, dass es so nur in einer Richtung, also in Abhängigkeit der Reihenfolge der Includierung in der main funktioniert. Eben weil man mit Vorwärtsdeklaration nur Zeiger oder Ref. erzeugen kann. Demnach müsste es also so auf jeden Fall funktionieren, da die header ja includiert ist. Tut es aber nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ist ja auch eigentlich kein Problen die Funktion in die cpp zu schreiben. Fuchst mich aber warum es nicht auch so geht.</p>
<pre><code class="language-cpp">#ifndef CONN_H
#define CONN_H

#include &lt;vector&gt;

using namespace std;

class Konnektor
{
   //..
};

class Ausgang : public Konnektor
{
	vector&lt;Eingang*&gt; verbList;
public:
	//..
	bool istVerbunden() { return verbList.size(); }
};

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

#include &quot;conn.h&quot;

class Gatter
{
protected:
	//..
	Ausgang *aus;
public:
	//..
	bool ausgangVerbunden() { return aus-&gt;istVerbunden(); } //error C2027: Verwendung des undefinierten Typs &quot;Ausgang&quot;
};

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1651914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651914</guid><dc:creator><![CDATA[BBSuisse]]></dc:creator><pubDate>Sun, 25 Jan 2009 11:30:35 GMT</pubDate></item><item><title><![CDATA[Reply to error C2027: Verwendung des undefinierten Typs on Sun, 25 Jan 2009 11:54:41 GMT]]></title><description><![CDATA[<p>Ich sehe in dem Beispiel jetzt keine Cross Includes..<br />
Hier wird ja lediglich ein File included und das sollte so gehen..</p>
<p>Im übrigen solltest du die Vorwärtsdeklaration dort hinmachen, wo du sie brauchst..</p>
<p>a.h</p>
<pre><code class="language-cpp">class B; //kein include

class A
{
 B* b;
};
</code></pre>
<p>b.h</p>
<pre><code class="language-cpp">class A; //auch kein include

class B
{
 A* a;
};
</code></pre>
<p>So würde das dann aussehen. Allerdings ist da die Frage, ob z.B B wirklich etwas mit A zu tun hat oder das besser anderst designt werden kann. Und somit fällt dann das cross Include weg.</p>
<p>btw:<br />
Niemals <code>using namespace</code> in einen Header packen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651925</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 25 Jan 2009 11:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to error C2027: Verwendung des undefinierten Typs on Sun, 25 Jan 2009 12:06:33 GMT]]></title><description><![CDATA[<p>ja, ich habe es zum Testen mal ohne versucht. Naja muss mich wohl mal näher damit befassen damit es klarer wird. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651928</guid><dc:creator><![CDATA[BBSuisse]]></dc:creator><pubDate>Sun, 25 Jan 2009 12:06:33 GMT</pubDate></item></channel></rss>