<?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[Typedefs und Klassen - Nicht  gefunden]]></title><description><![CDATA[<p>Ich habe u.a. 2 Dateien, deren Header das beinhalten:<br />
ECA.h</p>
<pre><code class="language-cpp">#ifndef __ECA_H__
#define __ECA_H__

#include &quot;Parameter.h&quot;
#include &lt;list&gt;

class ECA{
private:
	ParamList par;
//Rest
};

typedef std::list&lt;ECA&gt; ECAList;

#endif
</code></pre>
<p>Parameter.h</p>
<pre><code class="language-cpp">#ifndef __PARAMETER_H__
#define __PARAMETER_H__
#include &lt;list&gt;
#include &quot;ECA.h&quot;

class Parameter;

typedef std::list&lt;Parameter&gt; ParamList;

class Parameter{
public:
	ECAList funcs;
        ParamList par;
//Rest
};
#endif
</code></pre>
<p>(Die rekursive Struktur lässt sich nicht vermeiden)</p>
<p>Jetzt habe ich das Problem, dass er in der ECA.h das ParamList und in der Parameter.h das ECAList beim compilieren nicht findet. IntelliSense zeigt es aber an (Bei Hover bzw &quot;Gehe zu definition&quot;)</p>
<p>Sollte der typedef das nicht für alles deklarieren? Die Dateien werden doch wechselseitig eingebunden, sind also offensichtlich vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265412/typedefs-und-klassen-nicht-gefunden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 03:51:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265412.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Apr 2010 15:04:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 15:04:59 GMT]]></title><description><![CDATA[<p>Ich habe u.a. 2 Dateien, deren Header das beinhalten:<br />
ECA.h</p>
<pre><code class="language-cpp">#ifndef __ECA_H__
#define __ECA_H__

#include &quot;Parameter.h&quot;
#include &lt;list&gt;

class ECA{
private:
	ParamList par;
//Rest
};

typedef std::list&lt;ECA&gt; ECAList;

#endif
</code></pre>
<p>Parameter.h</p>
<pre><code class="language-cpp">#ifndef __PARAMETER_H__
#define __PARAMETER_H__
#include &lt;list&gt;
#include &quot;ECA.h&quot;

class Parameter;

typedef std::list&lt;Parameter&gt; ParamList;

class Parameter{
public:
	ECAList funcs;
        ParamList par;
//Rest
};
#endif
</code></pre>
<p>(Die rekursive Struktur lässt sich nicht vermeiden)</p>
<p>Jetzt habe ich das Problem, dass er in der ECA.h das ParamList und in der Parameter.h das ECAList beim compilieren nicht findet. IntelliSense zeigt es aber an (Bei Hover bzw &quot;Gehe zu definition&quot;)</p>
<p>Sollte der typedef das nicht für alles deklarieren? Die Dateien werden doch wechselseitig eingebunden, sind also offensichtlich vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886808</guid><dc:creator><![CDATA[Flamefire]]></dc:creator><pubDate>Thu, 22 Apr 2010 15:04:59 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 15:13:56 GMT]]></title><description><![CDATA[<p>Flamefire schrieb:</p>
<blockquote>
<p>(Die rekursive Struktur lässt sich nicht vermeiden)</p>
</blockquote>
<p>Dann kannst du es nur mit Zeigern/Referenzen und Forwarddeklaration lösen. Ein wechselseitig inkludieren ist nicht möglich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886814</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 22 Apr 2010 15:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 15:46:11 GMT]]></title><description><![CDATA[<p>das Konstrukt an sich funktioniert. Wenn ich die typedefs der map in der jeweils anderen Datei weiderhole, klappt auch alles (compiliert und funktioniert)<br />
Dass er nicht in einer endlosschleife von includes landet, verhindern die compiler-directiven</p>
<p>Aber ich wundere mich eben, dass er anscheinend das typedef &quot;übersieht&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886839</guid><dc:creator><![CDATA[Flamefire]]></dc:creator><pubDate>Thu, 22 Apr 2010 15:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 16:13:31 GMT]]></title><description><![CDATA[<p>in parameter.h steht nach dem include von eca.h sinngemäß folgendes:</p>
<pre><code class="language-cpp">#ifndef __PARAMETER_H__
#define __PARAMETER_H__

#include &lt;list&gt; //lass ich mal so..

// begin #include eca.h
  #ifndef __ECA_H__
  #define __ECA_H__

  //begin #include parameter.h
    #ifndef __PARAMETER_H__ //ist schon definiert. ende.
    #endif
  //end #include parameter.h
  //entfällt wegen include-guards: #include &lt;list&gt;

  class ECA{
  private:
      ParamList par; //FEHLER! was ist paramlist??
  //Rest
  };

  typedef std::list&lt;ECA&gt; ECAList;

  #endif //__ECA_H__
//end #include eca.h

class Parameter;

typedef std::list&lt;Parameter&gt; ParamList;

class Parameter{
public:
    ECAList funcs;
        ParamList par;
//Rest
};
#endif // __PARAMETER_H__
</code></pre>
<p>Andersrum ist sinngemäß ECAList nicht definiert..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886863</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 22 Apr 2010 16:13:31 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 16:26:45 GMT]]></title><description><![CDATA[<p>stimmt. Dann macht die Meldung auch sinn.<br />
Aber wie kann ich das ganze beheben?<br />
Eine Möglichkeit wäre ja jeweils eine Vorwärstdeklration auf den Typ der List, dann die List deklarieren und dann den Include. Danach den Rest wie gehabt.<br />
Ist aber etwas unsauber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886871</guid><dc:creator><![CDATA[Flamefire]]></dc:creator><pubDate>Thu, 22 Apr 2010 16:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 16:28:11 GMT]]></title><description><![CDATA[<p>Nein. Im Header Vorabdeklaration, Includen in der .cpp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886873</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Thu, 22 Apr 2010 16:28:11 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 16:35:25 GMT]]></title><description><![CDATA[<p>Flamefire schrieb:</p>
<blockquote>
<p>Aber wie kann ich das ganze beheben?</p>
</blockquote>
<p>So ähnlich wie du es gemacht hast - wenn überhaupt.<br />
Es kann sein, dass die Benutzung von std::list verlangt, dass der Argument-Typ vollständig definiert ist, dann gehts so garnicht und du musst mit Referenzen arbeiten. Bei std::vector ist das der Fall, bei std::list weiß ichs nicht.<br />
Falls forward-Deklarationen reichen machs so:</p>
<pre><code class="language-cpp">//eca.h
#ifndef ECA_H_ //bezeichner mit doppelten Unterstrichen sind reserviert!
#define ECA_H_ //bezeichner die mit Unterstrich+Grossbuchstabe beginnen auch

#include &lt;list&gt;
class Parameter;

class ECA
{
  typedef std::list&lt;Parameter&gt; ParamList;
  ParamList par;
};
#endif

/**********************************/
//parameter.h
#ifndef PARAMETER_H_ //s.o.
#define PARAMETER_H_

#include &lt;list&gt;
class ECA;

class Parameter
{
  typedef std::list&lt;ECA&gt; ECAList;
  typedef std::list&lt;Parameter&gt; ParamList;

  ECAList funcs;
  ParamList par;
};
#endif
</code></pre>
<p>Hat zum Vorteil, dass du mit den typedefs nicht den globalen namensraum vollmüllst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886876</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 22 Apr 2010 16:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 17:30:46 GMT]]></title><description><![CDATA[<p>Ok mache ich.<br />
BTW: Es funktioniert ja auch mit den Klassen, nicht nur mit den Pointern. MemLeaks gibts da lt VS auch nicht.</p>
<p>Zu den defines:<br />
Die Konvention hatte ich aus einem Tutorial vor ner Weile...<br />
Na gut, dann so.<br />
Da gibt es doch aber auch noch &quot;#pragma once&quot;<br />
Ist weniger aufwand und mehr Übersicht.</p>
<p>Hat das einen Nachteil, weshalb ich es nicht nehmen sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886897</guid><dc:creator><![CDATA[Flamefire]]></dc:creator><pubDate>Thu, 22 Apr 2010 17:30:46 GMT</pubDate></item><item><title><![CDATA[Reply to Typedefs und Klassen - Nicht  gefunden on Thu, 22 Apr 2010 20:26:10 GMT]]></title><description><![CDATA[<p>Flamefire schrieb:</p>
<blockquote>
<p>Ok mache ich.<br />
BTW: Es funktioniert ja auch mit den Klassen, nicht nur mit den Pointern.</p>
</blockquote>
<p>Was aber nicht für jeden Containertyp funktionieren müsste (Ggf. sogar von der konkreten Umsetzung der std::list abhängig ist - will jetzt dafür nicht im C++ Standard suchen).</p>
<p>Flamefire schrieb:</p>
<blockquote>
<p>Da gibt es doch aber auch noch &quot;#pragma once&quot;<br />
Ist weniger aufwand und mehr Übersicht.</p>
</blockquote>
<p>Ist aber Compilerabhängig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1886975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1886975</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 22 Apr 2010 20:26:10 GMT</pubDate></item></channel></rss>