<?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 c4430]]></title><description><![CDATA[<p>Ich habe seit gestern ständig diese Fehlermeldung c4430 und komme partout nicht weiter. Kann mir jemand helfen?</p>
<p>Irgendwie versuche ich 2 Header aufeinander zu verlinken und das funktioniert aber nicht. Was mache ich nur falsch?</p>
<blockquote>
<p>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;List2.h&quot;
#include &quot;Koordinate.h&quot;
#include &quot;Kante.h&quot;

using namespace std;

class Knoten
{
public:
	Knoten (double x, double y) : k(x,y) { };
	Knoten (Koordinate k) : k(k) { };

	double entfernung(const Knoten&amp; kn) const { 
		return k.entfernung(
			kn.get_koordinate()); };

	Koordinate get_koordinate() const { return k; };

	//void setze_kante(Knoten kn);
	//void loesche_kante(Knoten kn);

	friend ostream&amp; operator&lt;&lt;(ostream&amp; o, const Knoten&amp; kn);
	bool operator==(const Knoten&amp; kn) {	return (k==kn.k); };
	bool operator!=(const Knoten&amp; kn) {	return (k!=kn.k); };

private:
	Koordinate k;
	List2&lt;Kante&gt; kanten;
};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Knoten.h&quot;

using namespace std;

class Kante
{
public:
	Kante (const Knoten&amp; k_1, const Knoten&amp; k_2);  // HIER IST DER FEHLER!
	~Kante();

	Knoten get_von() const { return *k_1; };
	Knoten get_nach() const { return *k_2; };
	double get_entfernng() const { return entfernung; };

	friend bool operator==(Kante ka_1, Kante ka_2);

private:
	Knoten *k_1, *k_2;
	double entfernung;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/306178/error-c4430</link><generator>RSS for Node</generator><lastBuildDate>Sat, 08 Aug 2026 12:07:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306178.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jul 2012 09:12:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 09:12:55 GMT]]></title><description><![CDATA[<p>Ich habe seit gestern ständig diese Fehlermeldung c4430 und komme partout nicht weiter. Kann mir jemand helfen?</p>
<p>Irgendwie versuche ich 2 Header aufeinander zu verlinken und das funktioniert aber nicht. Was mache ich nur falsch?</p>
<blockquote>
<p>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int</p>
</blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;List2.h&quot;
#include &quot;Koordinate.h&quot;
#include &quot;Kante.h&quot;

using namespace std;

class Knoten
{
public:
	Knoten (double x, double y) : k(x,y) { };
	Knoten (Koordinate k) : k(k) { };

	double entfernung(const Knoten&amp; kn) const { 
		return k.entfernung(
			kn.get_koordinate()); };

	Koordinate get_koordinate() const { return k; };

	//void setze_kante(Knoten kn);
	//void loesche_kante(Knoten kn);

	friend ostream&amp; operator&lt;&lt;(ostream&amp; o, const Knoten&amp; kn);
	bool operator==(const Knoten&amp; kn) {	return (k==kn.k); };
	bool operator!=(const Knoten&amp; kn) {	return (k!=kn.k); };

private:
	Koordinate k;
	List2&lt;Kante&gt; kanten;
};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Knoten.h&quot;

using namespace std;

class Kante
{
public:
	Kante (const Knoten&amp; k_1, const Knoten&amp; k_2);  // HIER IST DER FEHLER!
	~Kante();

	Knoten get_von() const { return *k_1; };
	Knoten get_nach() const { return *k_2; };
	double get_entfernng() const { return entfernung; };

	friend bool operator==(Kante ka_1, Kante ka_2);

private:
	Knoten *k_1, *k_2;
	double entfernung;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2234295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234295</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Fri, 20 Jul 2012 09:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 09:50:40 GMT]]></title><description><![CDATA[<p>Henne Ei Problem, Knoten brauch Kante, Kannte brauch Knoten. Das kann nicht funktionieren !</p>
<p>Deine Klassen brauchen nicht die vollstanedige Definition, sondern nur die reservierung des Namens langt -&gt; Forward Deklaration.<br />
Merke: fuer Zeiger, Referenzen und Rueckgabewerte langen Forwards !</p>
<p>Um eine Kante anzulegen, brauchst du nicht die definition des Knotens.<br />
Deshalb, Knoten.h aus Kante.h raus, und nen Forward dafuer rein.<br />
Der include des Knotens muss dann in die Impl der Kante (Kante.cpp)</p>
<p>Anmerkung:<br />
using namespace std; im Header ist die EIntrittskarte zur Programmierhölle !!!</p>
<pre><code class="language-cpp">/// #include &lt;iostream&gt; /// warum brauchst du den ? Verwendest doch gar nix von 

/// using namespace std; /// Fail ! erst recht wenn mans gar nicht braucht ^^

class Knoten; // Forward 

class Kante
{
public:
    Kante (const Knoten&amp; k_1, const Knoten&amp; k_2);  // Sollte jetzt funktionieren
    ~Kante();

    Knoten get_von() const { return *k_1; };
    Knoten get_nach() const { return *k_2; };
    double get_entfernng() const { return entfernung; };

    friend bool operator==(Kante ka_1, Kante ka_2);

private:
    Knoten *k_1, *k_2;
    double entfernung;
};
</code></pre>
<p>Generell solltest Du vorsichtiger mit Abhaengigkeiten umgehen, und dir nicht so Zeugs reinziehen wo es nicht brauchst.<br />
Forwards Nutzen wo es geht !<br />
Deine Klassen werden Stabiler, und weniger ABhaengig (Black Box Prizip) und du kannst Implementierungs-Details besser verstecken.<br />
Wenn diese Design Vorteile nicht genug sind, wirst zusaetzlich noch nen Geschwindigkeitsvorteil beim partitiellen neucompilieren feststellen ...</p>
<p>Les Dich mal zum Thema PIMPL (Pointer of Implementation)Idom / Compiler Firewall Idom ein !!!!</p>
<p>#include &lt;iostream&gt; -&gt; checken ob nicht &lt;iosfwd&gt; langt !</p>
<p>List2&lt;Kante&gt; kanten; laesst sich definitiv gut &quot;Pimpln&quot;<br />
const std::auto_ptr&lt;List2&lt;Kante&gt; &gt; mptrKanten; /// in der initliste nicht vergessen die liste real zu erzeugen</p>
<p>statt dem auto_ptr besser nen scoped pointer aus dem neuen Standard nehmen, oder aus der boost, wenn möglich.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234306</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 20 Jul 2012 09:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 09:51:06 GMT]]></title><description><![CDATA[<p>Ich danke dir!!!<br />
Nun habe ich aber ein neues Problem!! <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="😞"
    /></p>
<pre><code class="language-cpp">error C2027: use of undefined type 'Knoten'
</code></pre>
<p>Was mache ich jetzt? Soll ich nur Zeiger zurückgeben? Geht es nicht auf die untere Weise?</p>
<p>RHBaum schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Knoten; // Forward 

class Kante
{
public:
    Kante (const Knoten&amp; k_1, const Knoten&amp; k_2);  // Sollte jetzt funktionieren
    ~Kante();
   
    Knoten get_von() const { return *k_1; };   // HIER IST DER FEHLER
    Knoten get_nach() const { return *k_2; };
    double get_entfernng() const { return entfernung; };

    friend bool operator==(Kante ka_1, Kante ka_2);

private:
    Knoten *k_1, *k_2;
    double entfernung;
};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2234308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234308</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Fri, 20 Jul 2012 09:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 10:06:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Soll ich nur Zeiger zurückgeben? Geht es nicht auf die untere Weise?</p>
</blockquote>
<p>Problem ist eher dass Du die funktion im header implementierst.<br />
Warum implementeirst du die methoden im Header, den CTor aber ned ^^ du brauchst dann eh ne cpp.<br />
Die Impl der Methoden gehoert definitiv in die cpp !!! (auch wenns mehr schreibarbeit ist)</p>
<p>Noch was:<br />
Brauchst du die copy wirklich ?<br />
Knoten ist definitiv auf nen CCTor angewiesen das es funktioniert.<br />
den getter eine Kopie zurueckgeben lassen macht nur sinn, wenn die Kopie erzwingen woelltest bzw. das halten einer referenz verhindern trachtest.</p>
<p>Hasst du keinen Grund dazu ist die bessere signatur der Methode:<br />
const Knoten &amp; get_von() const;<br />
Damit wirst auch &quot;performant&quot; wenn der Compiler keine return value optimization unterstützt ...</p>
<p>Was noch auffaellt:<br />
Kante (const Knoten&amp; k_1, const Knoten&amp; k_2);<br />
keinen StdCTor, die Angabe der Knoten k1 und k2 wird erzwungen.<br />
Knoten *k_1, *k_2; k_1 und k_2 koennen deshalb durch die logic nie NULL sein ...<br />
Zeiger die nie NULL werden koennen sind schlecht ^^ dafuer gibts Referenzen !</p>
<pre><code class="language-cpp">class Knoten; // Forward

class Kante
{
public:
    Kante (const Knoten&amp; k_1, const Knoten&amp; k_2); 
    ~Kante();

    const Knoten &amp; get_von() const;
    const Knoten &amp; get_nach() const;
    double get_entfernng() const;

    /// zum vergleichen sollten constante Objecte reichen,
    /// und damit auch referenzen
    friend bool operator==(const Kante &amp; ka_1,const Kante &amp; ka_2);

private:
    Knoten &amp; k_1; /// koennen die Refs hier auch konstant sein ??? Kann Kante Knoten Manipulieren ???
    Knoten &amp; k_2;
    double entfernung;
};
</code></pre>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234314</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 20 Jul 2012 10:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 10:05:58 GMT]]></title><description><![CDATA[<p>Ich danke dir noch einmal!<br />
Dieser Fehler ist eigentlich offensichtlich. Hab nur alles in eine Zeile geschrieben und mir ist der Fehler nicht aufgefallen!</p>
<p>RHBaum schrieb:</p>
<blockquote>
<p>Noch was:<br />
Brauchst du die copy wirklich ?<br />
Knoten ist definitiv auf nen CCTor angewiesen das es funktioniert.<br />
den getter eine Kopie zurueckgeben lassen macht nur sinn, wenn die Kopie erzwingen woelltest bzw. das halten einer referenz verhindern trachtest.</p>
</blockquote>
<p>Was ist ein CCTor? Nie gehört... <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="😞"
    /></p>
<p>RHBaum schrieb:</p>
<blockquote>
<p>Hasst du keinen Grund dazu ist die bessere signatur der Methode:<br />
const Knoten &amp; get_von() const;<br />
Damit wirst auch &quot;performant&quot; wenn der Compiler keine return value optimization unterstützt ...</p>
</blockquote>
<p>Ach so macht man Getter!</p>
<p>Dank Dir! <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/2234317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234317</guid><dc:creator><![CDATA[ichbineinnoob]]></dc:creator><pubDate>Fri, 20 Jul 2012 10:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to error c4430 on Fri, 20 Jul 2012 10:10:16 GMT]]></title><description><![CDATA[<blockquote>
<p>Was ist ein CCTor?</p>
</blockquote>
<p>CTor - Constructor (allgemein)<br />
StdCtor/SCTor - Standard Constructor<br />
CCTor - Copy Constructor<br />
DTor - Destructor</p>
<p>Ich liebe Abkürzungen ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2234319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2234319</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 20 Jul 2012 10:10:16 GMT</pubDate></item></channel></rss>