<?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[Klasse nicht Deklariert?]]></title><description><![CDATA[<p>Hallo,<br />
ich sitze jetzt seit 4 tagen vor dem selben problem und komm nicht mehr weiter, ich finde keinen fehler, der compiler anscheinend schon. ist wahrscheinlich etwas triviales das ich die ganze zeit übersehe.</p>
<p>ich habe drei klassen, eine grundklasse, einen erben und eine klasse die einen std::vector mit der grundklasse als member hat. grundklassen deklaration wird ohne probleme durchgegangen, aber der erbe verlangt einen klassennamen vor &quot;{&quot; und der vector sagt er kennt die grundklasse nicht.</p>
<p>die grundklasse(particle.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_PARTICLE
#define HEADER_PARTICLE

#include &quot;../position.h&quot;

class Particle {
	public:
							Particle();
							Particle(Position position);
		virtual			   ~Particle();
		virtual void		think();
		virtual void		draw();
	protected:
				Position	pos;
};

#endif
</code></pre>
<p>der erbe(waterdrop.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_WATERDROP
#define HEADER_WATERDROP

#include &quot;particle.h&quot;
#include &quot;../position.h&quot;
#include &quot;../vector.h&quot;

class WaterDrop : public Particle {
	public:
							WaterDrop(Position start, Vector acceleration, Vector gravity);
		virtual	void		draw();
		virtual	void		think();
	protected:
		Vector				accel;
		Vector				grav;
		Position			oldPos;
};

#endif
</code></pre>
<p>und die letzte klasse mit dem std::vector (emitter.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_PEMITTER
#define HEADER_PEMITTER

#include &quot;particle.h&quot;
#include &lt;vector&gt;

class Emitter {
	public:
		virtual	void				update();
	protected:
		int							maxParticle;
		std::vector&lt;Particle&gt;		particles;
};

#endif
</code></pre>
<p>Vector(ohne std::) ist eine von mir definierte klasse für 3d-Vektoren, nur damit das nicht zu verwirrungen führt.</p>
<p>der compiler meldet mir</p>
<pre><code>In file included from independent/particle/waterfall.h:11,
                 from independent/particle/waterfall.cpp:9:
independent/particle/waterdrop.h:16: error: expected class-name before ‘{’ token
In file included from independent/particle/waterfall.h:12,
                 from independent/particle/waterfall.cpp:9:
independent/particle/emitter.h:19: error: ‘Particle’ was not declared in this scope
independent/particle/emitter.h:19: error: template argument 1 is invalid
independent/particle/emitter.h:19: error: template argument 2 is invalid
</code></pre>
<p>es hat für mich den anschein das Particle irgendwie ein paar macken hat, die der compiler nicht meldet. könnt ihr mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/270754/klasse-nicht-deklariert</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 00:13:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270754.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Jul 2010 16:55:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse nicht Deklariert? on Sat, 17 Jul 2010 16:55:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich sitze jetzt seit 4 tagen vor dem selben problem und komm nicht mehr weiter, ich finde keinen fehler, der compiler anscheinend schon. ist wahrscheinlich etwas triviales das ich die ganze zeit übersehe.</p>
<p>ich habe drei klassen, eine grundklasse, einen erben und eine klasse die einen std::vector mit der grundklasse als member hat. grundklassen deklaration wird ohne probleme durchgegangen, aber der erbe verlangt einen klassennamen vor &quot;{&quot; und der vector sagt er kennt die grundklasse nicht.</p>
<p>die grundklasse(particle.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_PARTICLE
#define HEADER_PARTICLE

#include &quot;../position.h&quot;

class Particle {
	public:
							Particle();
							Particle(Position position);
		virtual			   ~Particle();
		virtual void		think();
		virtual void		draw();
	protected:
				Position	pos;
};

#endif
</code></pre>
<p>der erbe(waterdrop.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_WATERDROP
#define HEADER_WATERDROP

#include &quot;particle.h&quot;
#include &quot;../position.h&quot;
#include &quot;../vector.h&quot;

class WaterDrop : public Particle {
	public:
							WaterDrop(Position start, Vector acceleration, Vector gravity);
		virtual	void		draw();
		virtual	void		think();
	protected:
		Vector				accel;
		Vector				grav;
		Position			oldPos;
};

#endif
</code></pre>
<p>und die letzte klasse mit dem std::vector (emitter.h)</p>
<pre><code class="language-cpp">#ifndef HEADER_PEMITTER
#define HEADER_PEMITTER

#include &quot;particle.h&quot;
#include &lt;vector&gt;

class Emitter {
	public:
		virtual	void				update();
	protected:
		int							maxParticle;
		std::vector&lt;Particle&gt;		particles;
};

#endif
</code></pre>
<p>Vector(ohne std::) ist eine von mir definierte klasse für 3d-Vektoren, nur damit das nicht zu verwirrungen führt.</p>
<p>der compiler meldet mir</p>
<pre><code>In file included from independent/particle/waterfall.h:11,
                 from independent/particle/waterfall.cpp:9:
independent/particle/waterdrop.h:16: error: expected class-name before ‘{’ token
In file included from independent/particle/waterfall.h:12,
                 from independent/particle/waterfall.cpp:9:
independent/particle/emitter.h:19: error: ‘Particle’ was not declared in this scope
independent/particle/emitter.h:19: error: template argument 1 is invalid
independent/particle/emitter.h:19: error: template argument 2 is invalid
</code></pre>
<p>es hat für mich den anschein das Particle irgendwie ein paar macken hat, die der compiler nicht meldet. könnt ihr mir helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1927737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1927737</guid><dc:creator><![CDATA[M3t0r]]></dc:creator><pubDate>Sat, 17 Jul 2010 16:55:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht Deklariert? on Sat, 17 Jul 2010 17:07:42 GMT]]></title><description><![CDATA[<p>Also ich bin nicht in der Lage dir so zu helfen. ADie Zeilennummern der Fehlermeldungen stimmen gar nicht überein...</p>
<p>Kommentiert doch einfach mal so viel aus bis es wieder kompiliert. Versuch dann nochmal den Fehler selber zu finden und wenn du es dann noch immer nicht geschafft hast, dann reduzierst du den Code soweit, dass ein kompilierbares Beispiel rauskommt, welches die Fehlermeldung noch enthält.</p>
<p>Die Fehlermeldung begegnet einem jedenfalls oft, wenn man ein Semikolon vergessen hat:</p>
<pre><code class="language-cpp">class A
{
} // &lt;-- Fehlendes Semikolon
</code></pre>
<p>Schau mal in deiner Klasse Vector nach, ob dort nicht eins fehlt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1927745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1927745</guid><dc:creator><![CDATA[..........]]></dc:creator><pubDate>Sat, 17 Jul 2010 17:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht Deklariert? on Sat, 17 Jul 2010 17:11:56 GMT]]></title><description><![CDATA[<p>Zeig auch mal die dazugehörigen .cpp's.</p>
<p>btw:</p>
<pre><code class="language-cpp">std::vector&lt;Particle&gt; particles;
</code></pre>
<p>Geht so nicht, weil du keine Particle erzeugen kannst. Ist ja nur eine abstrakte Klasse.<br />
Speicher da lieber Zeiger.</p>
<p>Das löst vermutlich nicht die erste Fehlermeldung aus, sondern es ist eher so etwas, wie mein Vorposter andeutet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1927746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1927746</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 17 Jul 2010 17:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht Deklariert? on Sat, 17 Jul 2010 17:35:28 GMT]]></title><description><![CDATA[<p>is ja mal wieder typisch, kaum ne frage im internet gepostet, schon den fehler gefunden.</p>
<p>ich hatte in der waterfall.h auch #ifndef #define #endif drin, allerdings hatte ich das aus faulheit aus der particle.h importiert und vergessen den namen zu ändern.</p>
<p>naja, trotzdem danke für die hilfe und den tipp mit den pointern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1927757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1927757</guid><dc:creator><![CDATA[M3t0r]]></dc:creator><pubDate>Sat, 17 Jul 2010 17:35:28 GMT</pubDate></item></channel></rss>