<?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 korrekt eingebunden]]></title><description><![CDATA[<p>Hi,<br />
das ist jetzt schon das zweite Mal heute, dass ich mich hier melde. ist mir schon richtig peinlich, aber ich finde einfach keinen Fehler.</p>
<p>Meine Fehlermeldung ist:</p>
<pre><code>In file included from GLSystem/GLSystem.h:23,
                 from main.cpp:15:
GLSystem/GLFlatAnimObject.h: At global scope:
GLSystem/GLFlatAnimObject.h:52: error: ISO C++ forbids declaration of ‘GLTexture’ with no type
GLSystem/GLFlatAnimObject.h:52: error: expected ‘;’ before ‘*’ token
</code></pre>
<p>Ich habe GLTexture.h in der GLSystem extra nach oben verschoben, aber es hat nicht gegen den Fehler geholfen.</p>
<p>GLSystem.h</p>
<pre><code class="language-cpp">#ifndef GL_SYSTEM
#define GL_SYSTEM

#include &quot;GLWindow.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLFlatObject.h&quot;
//#include &quot;GLVolObject.h&quot;
#include &quot;GLTime.h&quot;
#include &quot;GLInput.h&quot;
#include &quot;GLAudio.h&quot;
#include &quot;GLSound.h&quot;
#include &quot;GLMusic.h&quot;
#include &quot;GLBitFont.h&quot;
#include &quot;GLText.h&quot;
#include &quot;GLCam.h&quot;
#include &quot;GLCursor.h&quot;
#include &quot;GLInfo.h&quot;
#include &quot;GLChannel.h&quot;
#include &quot;GLKeyRepeat.h&quot;
#include &quot;GLStopper.h&quot;
#include &quot;GLNet.h&quot;
#include &quot;GLFlatAnimObject.h&quot;
#include &quot;GLAnimCursor.h&quot;
#include &quot;GLFlatCursor.h&quot;
#include &quot;GLPacket.h&quot;
#include &quot;GLBlockedID.h&quot;
#include &quot;GLMouseObject.h&quot;

#endif
</code></pre>
<p>GLFlatAnimObject.h</p>
<pre><code class="language-cpp">#ifndef GL_FLATANIMOBJECT
#define GL_FLATANIMOBJECT

#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_video.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#else
#include &lt;SDL_video.h&gt;
#include &lt;SDL_opengl.h&gt;
#endif
#include &quot;GLTime.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLCam.h&quot;
#include &quot;GLTexture.h&quot;

class GLFlatAnimObject : public GLObject
{
	public:
		GLFlatAnimObject(GLTime* time, GLCam* camera);
//etc.

	private:
//etc.
		GLTexture* First;
		GLCam* Camera;
};

#endif
</code></pre>
<p>Vorwärtsdeklaration mit &quot;class GLTexture;&quot; hat auch nicht gegen den Fehler geholfen. Dann habe ich nur noch zusätzlich in GLFlatAnimObject.cpp Fehler erhalten, weil dort die Klasse GLTexture auch unbekannt war.</p>
<p>Findet jemand einen Fehler? Danke für's anschauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294820/klasse-nicht-korrekt-eingebunden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 17:20:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294820.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Nov 2011 23:53:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Tue, 01 Nov 2011 23:53:45 GMT]]></title><description><![CDATA[<p>Hi,<br />
das ist jetzt schon das zweite Mal heute, dass ich mich hier melde. ist mir schon richtig peinlich, aber ich finde einfach keinen Fehler.</p>
<p>Meine Fehlermeldung ist:</p>
<pre><code>In file included from GLSystem/GLSystem.h:23,
                 from main.cpp:15:
GLSystem/GLFlatAnimObject.h: At global scope:
GLSystem/GLFlatAnimObject.h:52: error: ISO C++ forbids declaration of ‘GLTexture’ with no type
GLSystem/GLFlatAnimObject.h:52: error: expected ‘;’ before ‘*’ token
</code></pre>
<p>Ich habe GLTexture.h in der GLSystem extra nach oben verschoben, aber es hat nicht gegen den Fehler geholfen.</p>
<p>GLSystem.h</p>
<pre><code class="language-cpp">#ifndef GL_SYSTEM
#define GL_SYSTEM

#include &quot;GLWindow.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLFlatObject.h&quot;
//#include &quot;GLVolObject.h&quot;
#include &quot;GLTime.h&quot;
#include &quot;GLInput.h&quot;
#include &quot;GLAudio.h&quot;
#include &quot;GLSound.h&quot;
#include &quot;GLMusic.h&quot;
#include &quot;GLBitFont.h&quot;
#include &quot;GLText.h&quot;
#include &quot;GLCam.h&quot;
#include &quot;GLCursor.h&quot;
#include &quot;GLInfo.h&quot;
#include &quot;GLChannel.h&quot;
#include &quot;GLKeyRepeat.h&quot;
#include &quot;GLStopper.h&quot;
#include &quot;GLNet.h&quot;
#include &quot;GLFlatAnimObject.h&quot;
#include &quot;GLAnimCursor.h&quot;
#include &quot;GLFlatCursor.h&quot;
#include &quot;GLPacket.h&quot;
#include &quot;GLBlockedID.h&quot;
#include &quot;GLMouseObject.h&quot;

#endif
</code></pre>
<p>GLFlatAnimObject.h</p>
<pre><code class="language-cpp">#ifndef GL_FLATANIMOBJECT
#define GL_FLATANIMOBJECT

#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_video.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#else
#include &lt;SDL_video.h&gt;
#include &lt;SDL_opengl.h&gt;
#endif
#include &quot;GLTime.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLCam.h&quot;
#include &quot;GLTexture.h&quot;

class GLFlatAnimObject : public GLObject
{
	public:
		GLFlatAnimObject(GLTime* time, GLCam* camera);
//etc.

	private:
//etc.
		GLTexture* First;
		GLCam* Camera;
};

#endif
</code></pre>
<p>Vorwärtsdeklaration mit &quot;class GLTexture;&quot; hat auch nicht gegen den Fehler geholfen. Dann habe ich nur noch zusätzlich in GLFlatAnimObject.cpp Fehler erhalten, weil dort die Klasse GLTexture auch unbekannt war.</p>
<p>Findet jemand einen Fehler? Danke für's anschauen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139068</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Tue, 01 Nov 2011 23:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 08:54:14 GMT]]></title><description><![CDATA[<p>Little Programmer schrieb:</p>
<blockquote>
<p>Ich habe GLTexture.h in der GLSystem extra nach oben verschoben, aber es hat nicht gegen den Fehler geholfen.</p>
</blockquote>
<p>Wenn du auch nur vermutest, dass die Reihenfolge von Includes Auswirkung auf das Verhalten deiner Header haben <em>könnte</em>, dann liegt schon etwas im Argen. Schreibe deine Header immer so, dass sie auf <strong>jeden Fall</strong> für sich alleine stehen können. Mach nichts unnötiges rein (Für einen Pointer reicht eine Vorwärtsdeklaration) aber lass auch nichts weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139175</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 08:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 16:31:54 GMT]]></title><description><![CDATA[<p>Mit der Vorwärtsdeklaration erhalte ich für jeden Zugriff auf den Zeiger in GLFlatObject.cpp folgende Fehlermeldung:</p>
<pre><code>GLSystem/GLFlatAnimObject.cpp: In destructor ‘virtual GLFlatAnimObject::~GLFlatAnimObject()’:
GLSystem/GLFlatAnimObject.cpp:71: error: invalid use of incomplete type ‘struct GLTexture’
GLSystem/GLFlatAnimObject.h:17: error: forward declaration of ‘struct GLTexture’
GLSystem/GLFlatAnimObject.cpp: In member function ‘bool GLFlatAnimObject::load(const std::string&amp;, int, bool)’:
GLSystem/GLFlatAnimObject.cpp:80: error: invalid use of incomplete type ‘struct GLTexture’
GLSystem/GLFlatAnimObject.h:17: error: forward declaration of ‘struct GLTexture’
GLSystem/GLFlatAnimObject.cpp:94: error: invalid use of incomplete type ‘struct GLTexture’
//etc.
</code></pre>
<p>obwohl ich die Header in der cpp inkludiere.</p>
<p>Hier nochmal GLFlatAnimObject.h</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_video.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#else
#include &lt;SDL_video.h&gt;
#include &lt;SDL_opengl.h&gt;
#endif
#include &quot;GLTime.h&quot;
#include &quot;GLObject.h&quot;

class GLCam;
class GLTexture;

class GLFlatAnimObject : public GLObject
{
	public:
//etc.
</code></pre>
<p>und hier die GLFlatAnimObject.cpp:</p>
<pre><code class="language-cpp">#include &quot;GLFlatAnimObject.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLTime.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLCam.h&quot;

#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#include &lt;SDL/SDL_image.h&gt;
#include &lt;unistd.h&gt;		//Um Pfad zum eigenen Ordner beim Dateiladen zu ermitteln
#else
#include &lt;SDL.h&gt;
#include &lt;SDL_opengl.h&gt;
#include &lt;SDL_image.h&gt;
#endif
#include &lt;string&gt;
#include &lt;sstream&gt;

GLFlatAnimObject::GLFlatAnimObject(GLTime* time, GLCam* camera) : GLObject(time), W(0), H(0), Frames(0), CurrFrame(0), Loop(false), Starttime(-1), Texture(0), First(0), Camera(camera) {}
//etc.
</code></pre>
<p>Und was kann ich jetzt noch probieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139432</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 16:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 16:44:50 GMT]]></title><description><![CDATA[<p>Hier das Ergebnis, wenn ich die Headerdateien für GLCam.h und GLTexture.h in GLFlatAnimObject.h inkludiere. Dabei ist es egal, ob ich sie in GLFlatAnimObject.cpp nochmal inkludiere oder nicht. Hab auch schon mehrmals alle Objektdateien gelöscht und das Projekt komplett neu kompiliert. Aber die Fehlermeldung bleibt gleich.</p>
<pre><code>In file included from GLSystem/GLFlatAnimObject.cpp:1:
GLSystem/GLFlatAnimObject.h:55: error: ISO C++ forbids declaration of ‘GLTexture’ with no type
GLSystem/GLFlatAnimObject.h:55: error: expected ‘;’ before ‘*’ token
GLSystem/GLFlatAnimObject.cpp: In constructor ‘GLFlatAnimObject::GLFlatAnimObject(GLTime*, GLCam*)’:
GLSystem/GLFlatAnimObject.cpp:21: error: class ‘GLFlatAnimObject’ does not have any field named ‘First’
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2139436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139436</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 16:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 17:15:44 GMT]]></title><description><![CDATA[<p>Ich würde einfach mal vermuten, dass du da eben irgendwo zirkuläre #includes hast, also Header die sich direkt oder indirekt gegenseitig inkludieren. Zusammen mit Includeguards führt das dann genau zu solchen Fehlern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139450</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 02 Nov 2011 17:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 17:16:00 GMT]]></title><description><![CDATA[<p>Dann hast du vielleicht einen Fehler bei der Deklaration von GLTexture.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139454</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 17:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 17:29:03 GMT]]></title><description><![CDATA[<p>GLTexture.h habe ich neu geschrieben, es wird momentan nur von der Klasse GLFlatAnimObject verwendet, also auch von keiner anderen Klasse inkludiert. Lediglich main.cpp inkludiert mit GLSystem.h alle Header-Dateien.</p>
<p>GLFlatAnimObject.h beginnt so, es führt nur eine Vorwärtsdeklaration der Klasse GLTexture durch, inkludiert sie aber nicht:</p>
<pre><code class="language-cpp">#ifndef GL_FLATANIMOBJECT
#define GL_FLATANIMOBJECT

#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_video.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#else
#include &lt;SDL_video.h&gt;
#include &lt;SDL_opengl.h&gt;
#endif
#include &quot;GLTime.h&quot;
#include &quot;GLObject.h&quot;

class GLCam;
class GLTexture;

class GLFlatAnimObject : public GLObject
{
</code></pre>
<p>GLFlatAnimObject.cpp inkludiert sie dann schließlich:</p>
<pre><code class="language-cpp">#include &quot;GLFlatAnimObject.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLTime.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLCam.h&quot;

#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL.h&gt;
#include &lt;SDL/SDL_opengl.h&gt;
#include &lt;SDL/SDL_image.h&gt;
#include &lt;unistd.h&gt;		//Um Pfad zum eigenen Ordner beim Dateiladen zu ermitteln
#else
#include &lt;SDL.h&gt;
#include &lt;SDL_opengl.h&gt;
#include &lt;SDL_image.h&gt;
#endif
#include &lt;string&gt;
#include &lt;sstream&gt;

GLFlatAnimObject::GLFlatAnimObject(GLTime* time, GLCam* camera) : GLObject(time), W(0), H(0), Frames(0), CurrFrame(0), Loop(false), Starttime(-1), Texture(0), First(0), Camera(camera) {}
</code></pre>
<p>Die Datei GLTexture.h ist klein, die kann ich komplett hier rein kopieren. Sie bindet aber keine andere Datei aus dem Projekt ein, also kann dort eigentlich kein Fehler liegen.</p>
<pre><code class="language-cpp">#ifndef GL_TEXTURE
#define GL_TEXTURE

#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_opengl.h&gt;
#include &lt;SDL/SDL_image.h&gt;
#else
#include &lt;SDL_opengl.h&gt;
#include &lt;SDL_image.h&gt;
#endif

class GLTexture
{
	public:
		GLTexture(const std::string&amp; filename) : Next(0), Texture(0)
		{
			load(filename);
		}

		~GLTexture() {glDeleteTextures(1, &amp;Texture);}

		//Bild aus Datei laden
		bool load(const std::string&amp; filename)
		{
			glDeleteTextures(1, &amp;Texture);	//Eventuell alte Textur löschen
			SDL_Surface* surface = IMG_Load(filename.c_str());
			if(!surface) return false;
			glPixelStorei(GL_UNPACK_ALIGNMENT,4);
			glGenTextures(1, &amp;Texture);
			glBindTexture(GL_TEXTURE_2D, Texture);
			SDL_PixelFormat *format = surface-&gt;format;
			if(format-&gt;Amask)
			{
				gluBuild2DMipmaps(GL_TEXTURE_2D, 4,
				surface-&gt;w, surface-&gt;h, GL_RGBA,GL_UNSIGNED_BYTE, surface-&gt;pixels);
			} else {
				gluBuild2DMipmaps(GL_TEXTURE_2D, 3,
				surface-&gt;w, surface-&gt;h, GL_RGB, GL_UNSIGNED_BYTE, surface-&gt;pixels);
			}
			SDL_FreeSurface(surface);

			//Lineare Filterung für Groß- und Kleinzoomen von Textur aktivieren
			glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
			glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

			//Texturmapping allgemein aktivieren
			glEnable(GL_TEXTURE_2D);

			return true;
		}

		void setNext(GLTexture* next) {Next = next;}

		GLTexture* getNext() {return Next;}
		GLuint* getTexture() {return &amp;Texture;}

		void deleteall() {if(Next != 0) {Next-&gt;deleteall(); delete Next;}}

	private:
		GLTexture* Next;
		GLuint Texture;
};

#endif
</code></pre>
<p>Und zur Übersicht, damit es komplett ist, die GLSystem.h, welche in main.cpp alle Klassen auf einmal einbindet:</p>
<pre><code class="language-cpp">#ifndef GL_SYSTEM
#define GL_SYSTEM

#include &quot;GLWindow.h&quot;
#include &quot;GLObject.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLFlatObject.h&quot;
//#include &quot;GLVolObject.h&quot;
#include &quot;GLTime.h&quot;
#include &quot;GLInput.h&quot;
#include &quot;GLAudio.h&quot;
#include &quot;GLSound.h&quot;
#include &quot;GLMusic.h&quot;
#include &quot;GLBitFont.h&quot;
#include &quot;GLText.h&quot;
#include &quot;GLCam.h&quot;
#include &quot;GLCursor.h&quot;
#include &quot;GLInfo.h&quot;
#include &quot;GLChannel.h&quot;
#include &quot;GLKeyRepeat.h&quot;
#include &quot;GLStopper.h&quot;
#include &quot;GLNet.h&quot;
#include &quot;GLFlatAnimObject.h&quot;
#include &quot;GLAnimCursor.h&quot;
#include &quot;GLFlatCursor.h&quot;
#include &quot;GLPacket.h&quot;
#include &quot;GLBlockedID.h&quot;
#include &quot;GLMouseObject.h&quot;

#endif
</code></pre>
<p>Ich sehe jetzt nirgends einen Fehler, wo sich etwas gegenseitig inkludieren würde o.ä.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139458</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 17:29:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 17:41:19 GMT]]></title><description><![CDATA[<p>Dein Compiler wird gewiss auch die Option bieten, den Preprocessoroutput anzuzeigen. Da kannst du mal gucken, ob wirklich alles in der Reihenfolge vorkommt, wie du denkst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139462</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 17:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 17:58:27 GMT]]></title><description><![CDATA[<p>Das Resultat:</p>
<pre><code>g++ -E -c -Wall main.cpp -o main.o
g++ -E -c -Wall GLSystem/GLFlatObject.cpp -o GLSystem/GLFlatObject.o
g++ -E -c -Wall GLSystem/GLObject.cpp -o GLSystem/GLObject.o
g++ -E -c -Wall GLSystem/GLTime.cpp -o GLSystem/GLTime.o
g++ -E -c -Wall GLSystem/GLWindow.cpp -o GLSystem/GLWindow.o
g++ -E -c -Wall GLSystem/GLInput.cpp -o GLSystem/GLInput.o
g++ -E -c -Wall GLSystem/GLAudio.cpp -o GLSystem/GLAudio.o
g++ -E -c -Wall GLSystem/GLSound.cpp -o GLSystem/GLSound.o
g++ -E -c -Wall GLSystem/GLMusic.cpp -o GLSystem/GLMusic.o
g++ -E -c -Wall GLSystem/GLBitFont.cpp -o GLSystem/GLBitFont.o
g++ -E -c -Wall GLSystem/GLText.cpp -o GLSystem/GLText.o
g++ -E -c -Wall GLSystem/GLCam.cpp -o GLSystem/GLCam.o
g++ -E -c -Wall GLSystem/GLCursor.cpp -o GLSystem/GLCursor.o
g++ -E -c -Wall GLSystem/GLInfo.cpp -o GLSystem/GLInfo.o
g++ -E -c -Wall GLSystem/GLNet.cpp -o GLSystem/GLNet.o
g++ -E -c -Wall GLSystem/GLFlatAnimObject.cpp -o GLSystem/GLFlatAnimObject.o
g++ -E -c -Wall GLSystem/GLAnimCursor.cpp -o GLSystem/GLAnimCursor.o
g++ -E -c -Wall GLSystem/GLFlatCursor.cpp -o GLSystem/GLFlatCursor.o
g++ -E -c -Wall GLSystem/GLMouseObject.cpp -o GLSystem/GLMouseObject.o
g++ -lSDL -lGL -lSDL_image -lGLU -lSDL_mixer -lSDL_net main.o ./GLSystem/GLFlatObject.o ./GLSystem/GLObject.o ./GLSystem/GLTime.o ./GLSystem/GLWindow.o ./GLSystem/GLInput.o ./GLSystem/GLAudio.o ./GLSystem/GLSound.o ./GLSystem/GLMusic.o ./GLSystem/GLBitFont.o ./GLSystem/GLText.o ./GLSystem/GLCam.o ./GLSystem/GLCursor.o ./GLSystem/GLInfo.o ./GLSystem/GLNet.o ./GLSystem/GLFlatAnimObject.o ./GLSystem/GLAnimCursor.o ./GLSystem/GLFlatCursor.o ./GLSystem/GLMouseObject.o -o 2DTest
main.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [2DTest] Fehler 1
</code></pre>
<p>Erscheint mir jetzt zufällig die Reihenfolge. Hat auch nichts damit zu tun, in welcher Reihenfolge ich Objekte der Klassen in main.cpp erstelle, die ist anders.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139471</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 17:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 18:19:35 GMT]]></title><description><![CDATA[<p>Ich kopiere jetzt das gesamte Projekt und lösche alle inkludes aus der Kopie heraus. Dann inkludiere und &quot;vorwärtsdeklariere&quot; ich alles neu. Vielleicht ist der Fehler irgendwi versteckt und verschwindet dann. Ich hoffe nur es werden nicht mehr Fehler^^.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139474</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 18:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 18:23:15 GMT]]></title><description><![CDATA[<p>So war das mit dem Präprozessorcode nicht gemeint. Du sollst ihn dir anzeigen und durchlesen (beziehungsweise nach der Position der Schlüsselstellen zueinander suchen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139477</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 18:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 20:18:37 GMT]]></title><description><![CDATA[<p>Man wirds nicht glauben. Obwohl ich einiges geändert habe, kompiliert es genauso wie vorher und der Fehler ist auch noch der gleiche wie vorher. Es muss also doch irgendwie mit der Klasse GLTexture zusammen hängen. Sieht denn wirklich niemand einen Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139533</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 20:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 20:25:50 GMT]]></title><description><![CDATA[<p>Folge Sepps Rat. Damit hast du gute Chancen. Ansonsten hat glaube ich keiner Lust, sich durch dieses Durcheinander zu wühlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139538</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 02 Nov 2011 20:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 21:03:03 GMT]]></title><description><![CDATA[<p>Anzeigen lassen kann ich ihn mir nicht. Nur aus allen Dateien zusammensuchen.</p>
<p>Zuerst beginnt es in der main.cpp mit dem inkludieren von GLSystem.h. Diese inkludiert in diesem Zusammenhang als erstes GLTexture.h, welches an sich keine weiteren Projektdateien inkludiert. Später wird dann von GLSystem.h GLFlatAnimObject.h inkludiert. Dieses inkludiert GLTime.h und GLObject.h, welche aber, wie auch alle anderen Dateien des Projekts, keine Verbindung zu GLTexture.h haben.</p>
<p>War es das was ihr meint?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139562</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 21:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 21:56:54 GMT]]></title><description><![CDATA[<p>mach mal <code>g++ -E main.cpp</code> . Dann wirst du verstehen, was ich meine. Und da das sehr unübersichtlich ist, speicherst du das Ergebnis in einer Datei und suchst mit deinem Lieblingseditor in welcher Zeile GLTexture definiert wird und in welcher Zeile es das erste mal benutzt wirst und dann wirst du ziemlich sicher feststellen, dass letzteres vor ersterem sein wird. Und dann kannst du nachvollziehen, warum dies so ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139586</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 21:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 22:10:35 GMT]]></title><description><![CDATA[<p>So ganz verstehe ich nicht, was die Ausgabe bedeutet. Das erste mal wird GLTexture.h nach dem Quelltext einer anderen Klasse erwähnt. Ich nehme mal an, diese Klasse wurde dort kompiliert. Der Kontext in dem GLTexture.h steht ist folgender:</p>
<pre><code># 6 &quot;GLSystem/GLSystem.h&quot; 2
# 1 &quot;GLSystem/GLTexture.h&quot; 1
# 7 &quot;GLSystem/GLSystem.h&quot; 2
# 1 &quot;GLSystem/GLFlatObject.h&quot; 1
</code></pre>
<p>Was genau sagen mir die Zahlen vor und hinter dem Pfad? Und wurde hier die Klasse deklariert oder was genau bedeutet die Erwähnung?</p>
<p>Anschließend steht GLTexture nur noch in der Klasse GLFlatAnimObject.h, welche auch als Quelltext dargestellt ist. Also an dieser Stelle wahrscheinlich kompiliert wurde.</p>
<p>Ich würde jetzt fast annehmen, dass die einfache Erwähnung oben keine Deklarierung darstellt und GLTexture.h nie deklariert wird. Aber ich weiß nicht warum. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2139600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139600</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Wed, 02 Nov 2011 22:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Wed, 02 Nov 2011 22:25:47 GMT]]></title><description><![CDATA[<p>1. Da wurde gar nichts compiliert. Das ist die Ausgabe des Präprozessors. Das ist das was der Compiler <em>sieht</em>, nachdem der Präprozessor das Spaghettieknäuel deiner Header verwurstet hat. Und daran kannst du dann nachvollziehen, warum der Compiler Probleme mit deinem Code hat.<br />
2. Die Zeilen die du da hin geschrieben hast sind so eine Art &quot;Kommentare&quot; des Präprozessors für den Compiler. Der soll schließlich sinnvolle Meldungen über den Ort der fehlerhaften Zeilen machen können. Da der Präprozessoroutput alles ist, was der Compiler noch sieht, muss ihm die Information über Zeilen und Dateien irgendwie zugesteckt werden. Guckst du hier, wenn dich das interessiert:<br />
<a href="http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html" rel="nofollow">http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139604</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 02 Nov 2011 22:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 13:41:06 GMT]]></title><description><![CDATA[<p>Ok, jetzt habe ich durchgeblickt.</p>
<p>Der Präprozessor geht meine includes in GLSystem.h durch, in dem ja alle anderen Dateien inkludiert werden.</p>
<p>Hier der Abschnitt in GLSystem.h</p>
<pre><code class="language-cpp">#include &quot;GLObject.h&quot;
#include &quot;GLTexture.h&quot;
#include &quot;GLFlatObject.h&quot;
</code></pre>
<p>Jetzt die Präprozessorausgabe dazu mit Erläuterungen von mir:</p>
<pre><code># 1 &quot;GLSystem/GLObject.h&quot; 1    //Es wird mit GLObject.h begonnen
# 11 &quot;GLSystem/GLObject.h&quot;
# 1 &quot;GLSystem/GLTime.h&quot; 1    //Dort ist GLTime.h inkludiert, also wird dies eingeschoben
# 11 &quot;GLSystem/GLTime.h&quot;
class GLTime
{
//etc.
};
# 12 &quot;GLSystem/GLObject.h&quot; 2    //Es wird mit GLObject.h fortgefahren

class GLObject
{
//etc.
};
# 6 &quot;GLSystem/GLSystem.h&quot; 2    //Rückkehr zu GLSystem.h
# 1 &quot;GLSystem/GLTexture.h&quot; 1    [b]//Es wird mit GLTexture.h begonnen[/b]
# 7 &quot;GLSystem/GLSystem.h&quot; 2    [b]//Rückkehr zu GLSystem.h[/b]
# 1 &quot;GLSystem/GLFlatObject.h&quot; 1    //Es wird mit GLFlatObject.h begonnen

# 1 &quot;/usr/include/SDL/SDL_opengl.h&quot; 1 3 4    //Inkludierungen in GLFlatObject.h
# 64 &quot;/usr/include/SDL/SDL_opengl.h&quot; 3 4
extern &quot;C&quot; {
# 3103 &quot;/usr/include/SDL/SDL_opengl.h&quot; 3 4
# 1 &quot;/usr/lib/gcc/i486-linux-gnu/4.4.3/include/stddef.h&quot; 1 3 4
# 3104 &quot;/usr/include/SDL/SDL_opengl.h&quot; 2 3 4
# 6551 &quot;/usr/include/SDL/SDL_opengl.h&quot; 3 4
}
# 9 &quot;GLSystem/GLFlatObject.h&quot; 2    //Es wird mit GLFlatObject.h fortgefahren

class GLTime;
class GLCam;

class GLFlatObject : public GLObject
{
//etc.
};
# 8 &quot;GLSystem/GLSystem.h&quot; 2    //Rückkehr zu GLSystem.h
</code></pre>
<p>Wie man sieht, wird GLTexture.h einfach übersprungen. Die einzige Möglichkeit, welche mir dafür einfällt, wäre, dass die Präprozessorabfrage gegen Mehrfacheinbindung fehlschlägt:</p>
<pre><code class="language-cpp">#ifndef GL_TEXTURE
#define GL_TEXTURE

#include &lt;string&gt;
#define LINUX
#ifdef LINUX
#include &lt;SDL/SDL_opengl.h&gt;
#include &lt;SDL/SDL_image.h&gt;
#else
#include &lt;SDL_opengl.h&gt;
#include &lt;SDL_image.h&gt;
#endif

class GLTexture
{
//etc.
};

#endif
</code></pre>
<p>Aber es gibt keine andere Klasse mit gleichem Namen. Woher sollte also GL_TEXTURE kommen?<br />
Ich wurde jetzt nicht schlauer daraus. Hat jemand von euch eine Ahnung, wieso der Präprozessor eine Datei überspringt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139817</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Thu, 03 Nov 2011 13:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 13:46:15 GMT]]></title><description><![CDATA[<p>Das ist doch genau das was ich gesagt hab: Zirkuläre #includes. Deine Präprozessorabfrage <em>gegen Mehrfacheinbindung</em> schlägt nicht fehl, sie tut genau das, wofür sie gedacht ist: Sie verhindert die Mehrfacheinbindung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139820</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 03 Nov 2011 13:46:15 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 13:56:56 GMT]]></title><description><![CDATA[<p>Aber das ist die einzige Einbindung von GLTexture.h. Später in GLFlatAnimObject.h ist es, obwohl es inkludiert wird, nicht mehr erwähnt, da hat der Präprozessor es tatsächlich komplett übersprungen. Aber vor dieser Einbindung, welche ich hier gepostet habe, wurde es nicht eingebunden. Die gepostete Stelle ist die einzige Stelle, in der es in der Präprozessorausgabe auftaucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139822</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Thu, 03 Nov 2011 13:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:06:55 GMT]]></title><description><![CDATA[<p>Beispiel:</p>
<p>A.h inkludiert gleich am Anfang B.h.<br />
B.h braucht Dinge aus A.h und inkludiert daher wieder A.h.<br />
A.h wird nun aber übersprungen, da es schon inkludiert wurde.<br />
D.h. in B.h gibts kein A.h obwohl es eigentlich gebraucht wird. Erst <em>nach</em> B.h kommt der eigentliche Inhalt von A.h, aber dort ist es zu spät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139829</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:13:26 GMT]]></title><description><![CDATA[<p>Es sieht, sofern deine Beiträge der Wahrheit entsprechen, tatsächlich nicht nach zirkulärer Einbindung aus. Wird vielleicht fälschlicherweise irgendwo ein anderes GL_TEXTURE definiert? Ich könnte mir gut vorstellen, dass dies eventuell sogar durch die OpenGL-Header selbst geschehen könnte. Nenn das Makro doch testhalber irgendwie anders, z.B. GL_TEXTURE_ABC_123_BLABLA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139831</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:13:26 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:25:31 GMT]]></title><description><![CDATA[<p>Ja, das Prinzip kenne ich. Aber GLTexture.h benötigt keine anderen Dateien aus dem Projekt und inkludiert auch keine (die inkludes von GLTexture.h stehen in meinem letzten Post, nur string, SDL_image und SDL_opengl).<br />
Und GLTexture.h wird nur von GLFlatAnimObject.h und von GLSystem.h inkludiert.<br />
Habs jetzt noch einmal GLTexture.h ganz ans Ende von GLSystem.h gesetzt.<br />
Aber an dem Problem hat das nichts geändert. GLTexture.h wird nun halt erst ganz am Ende das erste mal im Präprozessor erwähnt, wird aber wieder übersprungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139836</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:22:44 GMT]]></title><description><![CDATA[<p>Tatsache. Mit GL_BLUBB hat das Programm kompiliert. Da hat mich OpenGL wohl auf den Arm genommen.</p>
<p>Vielen Dank SeppJ! <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>
<p>Und natürlich auch dir vielen Dank dot! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2139840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139840</guid><dc:creator><![CDATA[Little Programmer]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:44:31 GMT]]></title><description><![CDATA[<p>Jaja, die Makros <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="😃"
    /> . Da sieht man mal wieder die Gefahren. Daher möglichst Makronamen benutzen, die ziemlich sicher niemand sonst benutzen wird. Großschreibung ist übliche Konvention, da dran sollte man sich halten, auch wenn es die möglichen Namen einschränkt. Was aber gut kommt, sind exotische Prä- oder Suffixe. Das haben sich die Open_GL Entwickler so gedacht und haben alles mit GL_ am Anfang gemacht. Du leider auch <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="😃"
    /> . Was gut kommt, wenn man für sich privat entwickelt sind zum Beispiel die eigenen Initialen als Präfix. Oder eine Abkürzung des Projektnamens.</p>
<p>Guckst du zum Beispiel hier das Problem 1 an:<br />
<a href="http://www.boost.org/doc/libs/1_47_0/libs/preprocessor/doc/index.html" rel="nofollow">http://www.boost.org/doc/libs/1_47_0/libs/preprocessor/doc/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139849</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139849</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse nicht korrekt eingebunden on Thu, 03 Nov 2011 14:48:49 GMT]]></title><description><![CDATA[<p>Was noch besser kommt: <code>namespace</code> <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>
<p>EDIT: Oh, Makros...pööööhse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139856</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 03 Nov 2011 14:48:49 GMT</pubDate></item></channel></rss>