<?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[Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme einen Fehler über einen nichtdeklarierten Bezeichner, obwohl ich ihn ordnungsgemäß deklariert habe.<br />
Der Fehler weist auch auf die Getter-Methode hin, obwohl ich die Variable schonmal im Konstruktor auf 0 setze.<br />
Hier mal der Code:</p>
<p>sprite.h</p>
<pre><code class="language-cpp">#ifndef _SPRITE_
#define _SPRITE_

#include &lt;d3d9.h&gt;
#include &lt;d3dx9.h&gt;
#include &lt;vector&gt;

#include &quot;ResourceManager.h&quot;
#include &quot;global.h&quot;

using namespace std;

// Definition der Bewegungsrichtungen
enum DIRECTION { LEFT, RIGHT, UP, DOWN };

// Definition der Spriteklasse
class CSprite
{
    public:
       CSprite();
       virtual ~CSprite();

       // Erzeugung des Sprites
       void Create(LPDIRECT3DDEVICE9 lpDevice,CResourceManager* ResManager ,int AnimationSpeed);

       // Textur hinzufügen
        void AddTexture(LPDIRECT3DTEXTURE9 lpTexture);

       // Sprite zeichnen
       void Draw(void);

       // absolute Position festlegen
       void SetPosition(float x,float y);

       // absolute Rotation festlegen
       void SetRotation(float rotation);

       // absolute Skalierung festlegen
       void SetScale(float scale);

       // Schrittweite festlegen
       void SetStep(float StepX,float StepY);

       // relative Bewegung um StepX,StepY Pixel
       void Move(DIRECTION dir);

       // relative Skalierung 
       void Scale(float dScale);

       // relative Rotation
       void Rotate(float dRotation);

       // Sprite an den Bildschirmbegrenzungen abprallen lassen
       void Bounce(void);

	   // testen ob die nächste Animation angezeigt werden soll
        void Animate(void);

	   // die Position des Sprites zurückgeben
        D3DXVECTOR2 GetPosition(void);

		// Höhe und Breite des Sprites zurückgeben
        int GetHeight(void);
        int GetWidth(void);

		//Typus setzen
		void SetType(int type);
		int GetType(void);

     protected:

       // Zeiger auf das Direct3D Device
       LPDIRECT3DDEVICE9 m_lpDevice;

       // Zeiger auf das ID3DXSprite-Objekt
       LPD3DXSPRITE m_lpSprite;

	   // Zeiger auf den ResourceManager speichern
       CResourceManager* m_ResManager;

       // aktuelle Position
       D3DXVECTOR2 m_vPosition;

       // Skalierung
       D3DXVECTOR2 m_vScale;

       // Rotationsmittelpunkt
       D3DXVECTOR2 m_vRotationCenter;

       // aktuelle Rotation
       float m_Rotation;

       // Schrittweite
       float m_StepX;
       float m_StepY;

	   //Typus
	   int m_Art;

       // Breite und Höhe
       int   m_Width;
       int   m_Height;

        // Geschwindigkeit für die Animation
        float m_AnimationSpeed;

       // diese Variable wird erhöhrt, bis m_AnimationSpeed
       // erreicht wurde und wird dann wieder auf 0 gesetzt
       // und die nächste Grafik wird angezeigt
       int m_AnimationDelay;

       // momentante Grafik (Textur) in der Animation
       float m_CurrentImage;

       // vector zur Speicherung der Texturen für die Animationen
       vector&lt;LPDIRECT3DTEXTURE9&gt; m_AnimationVec;
};
#endif
</code></pre>
<p>Sprite.cpp - Code gekürzt</p>
<pre><code class="language-cpp">#include &quot;Sprite.h&quot;

// Konstruktor - Initialisierungen
CSprite::CSprite(void)
{
    m_Rotation = 0;

    m_StepX    = 0;
    m_StepY    = 0;

    m_Width    = 0;
    m_Height   = 0;

    m_AnimationSpeed = 0;
    m_AnimationDelay = 0;
    m_CurrentImage   = 0;

    m_lpDevice = NULL;                  
    m_lpSprite = NULL;

	m_Art = 0;
}

// Destructor - freigeben der Objekte
CSprite::~CSprite(void)
{
    if(NULL != m_lpSprite)
    {
        m_lpSprite-&gt;Release();
        m_lpSprite = NULL;
    }

    // die Texturen dürfen hier nicht mehr frei gegeben
    // werden, da dies im ResourcenManager erfolgt
}

//Typus abfragen
int GetType(void)
{
	return m_Art;
}

//Typus setzen
void SetType(int type)
{
	m_Art = type;
}
</code></pre>
<p>Fehlermeldung:</p>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: SpriteBounce, Konfiguration: Debug Win32 ------
1&gt;Kompilieren...
1&gt;sprite.cpp
1&gt;e:\spiel\spritebounce\sprite.cpp(57) : error C2065: 'm_Art': nichtdeklarierter Bezeichner

...
</code></pre>
<p>Vielleicht ist es auch nur ein ganz banaler Fehler und ich übersehe ihn nur. Ich habe das Projekt auch schonmal bereinigt und neu erstellt - hilft nix. Ich verwende VS 2005 Professional Edition.</p>
<p>Danke schonmal für eure Hilfe.<br />
MfG Bastie</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193250/fehler-über-nichtdeklarierten-bezeichner-obwohl-ordnungsgemäß-deklariert</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 22:45:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193250.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Sep 2007 10:33:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 10:43:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bekomme einen Fehler über einen nichtdeklarierten Bezeichner, obwohl ich ihn ordnungsgemäß deklariert habe.<br />
Der Fehler weist auch auf die Getter-Methode hin, obwohl ich die Variable schonmal im Konstruktor auf 0 setze.<br />
Hier mal der Code:</p>
<p>sprite.h</p>
<pre><code class="language-cpp">#ifndef _SPRITE_
#define _SPRITE_

#include &lt;d3d9.h&gt;
#include &lt;d3dx9.h&gt;
#include &lt;vector&gt;

#include &quot;ResourceManager.h&quot;
#include &quot;global.h&quot;

using namespace std;

// Definition der Bewegungsrichtungen
enum DIRECTION { LEFT, RIGHT, UP, DOWN };

// Definition der Spriteklasse
class CSprite
{
    public:
       CSprite();
       virtual ~CSprite();

       // Erzeugung des Sprites
       void Create(LPDIRECT3DDEVICE9 lpDevice,CResourceManager* ResManager ,int AnimationSpeed);

       // Textur hinzufügen
        void AddTexture(LPDIRECT3DTEXTURE9 lpTexture);

       // Sprite zeichnen
       void Draw(void);

       // absolute Position festlegen
       void SetPosition(float x,float y);

       // absolute Rotation festlegen
       void SetRotation(float rotation);

       // absolute Skalierung festlegen
       void SetScale(float scale);

       // Schrittweite festlegen
       void SetStep(float StepX,float StepY);

       // relative Bewegung um StepX,StepY Pixel
       void Move(DIRECTION dir);

       // relative Skalierung 
       void Scale(float dScale);

       // relative Rotation
       void Rotate(float dRotation);

       // Sprite an den Bildschirmbegrenzungen abprallen lassen
       void Bounce(void);

	   // testen ob die nächste Animation angezeigt werden soll
        void Animate(void);

	   // die Position des Sprites zurückgeben
        D3DXVECTOR2 GetPosition(void);

		// Höhe und Breite des Sprites zurückgeben
        int GetHeight(void);
        int GetWidth(void);

		//Typus setzen
		void SetType(int type);
		int GetType(void);

     protected:

       // Zeiger auf das Direct3D Device
       LPDIRECT3DDEVICE9 m_lpDevice;

       // Zeiger auf das ID3DXSprite-Objekt
       LPD3DXSPRITE m_lpSprite;

	   // Zeiger auf den ResourceManager speichern
       CResourceManager* m_ResManager;

       // aktuelle Position
       D3DXVECTOR2 m_vPosition;

       // Skalierung
       D3DXVECTOR2 m_vScale;

       // Rotationsmittelpunkt
       D3DXVECTOR2 m_vRotationCenter;

       // aktuelle Rotation
       float m_Rotation;

       // Schrittweite
       float m_StepX;
       float m_StepY;

	   //Typus
	   int m_Art;

       // Breite und Höhe
       int   m_Width;
       int   m_Height;

        // Geschwindigkeit für die Animation
        float m_AnimationSpeed;

       // diese Variable wird erhöhrt, bis m_AnimationSpeed
       // erreicht wurde und wird dann wieder auf 0 gesetzt
       // und die nächste Grafik wird angezeigt
       int m_AnimationDelay;

       // momentante Grafik (Textur) in der Animation
       float m_CurrentImage;

       // vector zur Speicherung der Texturen für die Animationen
       vector&lt;LPDIRECT3DTEXTURE9&gt; m_AnimationVec;
};
#endif
</code></pre>
<p>Sprite.cpp - Code gekürzt</p>
<pre><code class="language-cpp">#include &quot;Sprite.h&quot;

// Konstruktor - Initialisierungen
CSprite::CSprite(void)
{
    m_Rotation = 0;

    m_StepX    = 0;
    m_StepY    = 0;

    m_Width    = 0;
    m_Height   = 0;

    m_AnimationSpeed = 0;
    m_AnimationDelay = 0;
    m_CurrentImage   = 0;

    m_lpDevice = NULL;                  
    m_lpSprite = NULL;

	m_Art = 0;
}

// Destructor - freigeben der Objekte
CSprite::~CSprite(void)
{
    if(NULL != m_lpSprite)
    {
        m_lpSprite-&gt;Release();
        m_lpSprite = NULL;
    }

    // die Texturen dürfen hier nicht mehr frei gegeben
    // werden, da dies im ResourcenManager erfolgt
}

//Typus abfragen
int GetType(void)
{
	return m_Art;
}

//Typus setzen
void SetType(int type)
{
	m_Art = type;
}
</code></pre>
<p>Fehlermeldung:</p>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: SpriteBounce, Konfiguration: Debug Win32 ------
1&gt;Kompilieren...
1&gt;sprite.cpp
1&gt;e:\spiel\spritebounce\sprite.cpp(57) : error C2065: 'm_Art': nichtdeklarierter Bezeichner

...
</code></pre>
<p>Vielleicht ist es auch nur ein ganz banaler Fehler und ich übersehe ihn nur. Ich habe das Projekt auch schonmal bereinigt und neu erstellt - hilft nix. Ich verwende VS 2005 Professional Edition.</p>
<p>Danke schonmal für eure Hilfe.<br />
MfG Bastie</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371498</guid><dc:creator><![CDATA[riot.84]]></dc:creator><pubDate>Mon, 24 Sep 2007 10:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 10:43:03 GMT]]></title><description><![CDATA[<p>Klassenname bei der Definition der Memberfunktionen vergessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371507</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 24 Sep 2007 10:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 10:47:23 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Klassenname bei der Definition der Memberfunktionen vergessen?</p>
</blockquote>
<p>sieht ganz so aus.<br />
OP: du kannst den code für die methoden direkt in die 'class' mit hineinschreiben. dann passiert sowas nicht. beispiel:</p>
<pre><code class="language-cpp">class CSprite
{
    public:
    ...
      int GetType(void)
      {
         return m_Art;
      }
    ...
};
</code></pre>
<p><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/1371511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371511</guid><dc:creator><![CDATA[Apeman]]></dc:creator><pubDate>Mon, 24 Sep 2007 10:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 11:27:09 GMT]]></title><description><![CDATA[<p>Ehm naja dein Code ist optimierungsbedürftig ^^ Also</p>
<pre><code class="language-cpp">#if !defined(SPRITE_H__INCLUDED)
#define SPRITE_H__INCLUDED

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

#include &lt;d3d9.h&gt;
#include &lt;d3dx9.h&gt;
#include &lt;vector&gt;

#include &quot;ResourceManager.h&quot;
#include &quot;global.h&quot;

// Definition der Bewegungsrichtungen
enum DIRECTION { LEFT, RIGHT, UP, DOWN };

// Definition der Spriteklasse
class Sprite
{
public:
	Sprite();
	virtual ~Sprite();

public:
	// Erzeugung des Sprites
	void create(LPDIRECT3DDEVICE9, CResourceManager*, int);
	// Textur hinzufügen
	void add_texture(LPDIRECT3DTEXTURE9 lpTexture);
	// Sprite zeichnen
	void draw();
	// absolute Position festlegen
	void set_position(float x, float y) { m_vPosition.x = x; m_vPosition.y = y; }
	// absolute Rotation festlegen
	void set_rotation(float rot) { m_Rotation = rot; }
	// absolute Skalierung festlegen
	void set_scale(float);
	// Schrittweite festlegen
	void set_step(float x, float y) { m_vStep.x = x; m_vStep.y = y; }
	// relative Bewegung um StepX,StepY Pixel
	void move(const DIRECTION&amp;);
	// relative Skalierung
	void scale(float);
	// relative Rotation
	void rotate(float);
	// Sprite an den Bildschirmbegrenzungen abprallen lassen
	void bounce();
	// testen ob die nächste Animation angezeigt werden soll
	void animate();
	// die Position des Sprites zurückgeben
	D3DXVECTOR2 get_position() const { return m_vPosition; };
	// Höhe und Breite des Sprites zurückgeben
	std::size_t get_height() const { return m_Height; }
	std::size_t get_width() const { return m_Width; }
	//Typus setzen
	void set_type(int type) { m_Art = type; }
	int get_type() const { return m_Art; }

protected:
	// Zeiger auf das Direct3D Device
	LPDIRECT3DDEVICE9	m_lpDevice;
	// Zeiger auf das ID3DXSprite-Objekt
	LPD3DXSPRITE		m_lpSprite;
	// Zeiger auf den ResourceManager speichern
	CResourceManager*	m_ResManager;
	// aktuelle Position
	D3DXVECTOR2			m_vPosition;
	// Skalierung
	D3DXVECTOR2			m_vScale;
	// Rotationsmittelpunkt
	D3DXVECTOR2			m_vRotationCenter;
	// aktuelle Rotation
	float				m_Rotation;
	// Schrittweite
	D3DXVECTOR2			m_vStep;
	//Typus
	int					m_Art;
	// Breite und Höhe
	std::size_t			m_Width;
	std::size_t			m_Height;
	// Geschwindigkeit für die Animation
	float				m_AnimationSpeed;
	// diese Variable wird erhöhrt, bis m_AnimationSpeed
	// erreicht wurde und wird dann wieder auf 0 gesetzt
	// und die nächste Grafik wird angezeigt
	int					m_AnimationDelay;
	// momentante Grafik (Textur) in der Animation
	float				m_CurrentImage;
	// vector zur Speicherung der Texturen für die Animationen
	std::vector&lt;LPDIRECT3DTEXTURE9&gt;		m_AnimationVec;
};

#endif // SPRITE_H__INCLUDED
</code></pre>
<p>... ist noch nicht alles drin ... Initialisierungsliste usw. gehört auch noch darein ...</p>
<pre><code class="language-cpp">CSprite::~CSprite(void)
{
    if(NULL != m_lpSprite)
    {
        m_lpSprite-&gt;Release();
        m_lpSprite = NULL;
    }

    // die Texturen dürfen hier nicht mehr frei gegeben
    // werden, da dies im ResourcenManager erfolgt
}
</code></pre>
<p>kann man auch so machen:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
vois safe_release(T* type) { if (type != NULL) { type-&gt;Release(); type = NULL; } }

Sprite::~Sprite()
{
    safe_release(m_lpSprite);
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371540</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 24 Sep 2007 11:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 11:33:42 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>kann man auch so machen:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
vois safe_release(T* type) { if (type != NULL) { type-&gt;Release(); type = NULL; } }

Sprite::~Sprite()
{
    safe_release(m_lpSprite);
}
</code></pre>
<p>...</p>
</blockquote>
<p>Oder gleich boost::intrusive_ptr verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371541</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 24 Sep 2007 11:33:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler über nichtdeklarierten Bezeichner, obwohl ordnungsgemäß deklariert on Mon, 24 Sep 2007 11:33:50 GMT]]></title><description><![CDATA[<p>Vielen Dank für die schnellen Antworten.</p>
<p>Fehler habe ichs chon ausgebessert und die Methoden-Deklaration werd ich wohl weiterhin erstmal in der .cpp machen.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1371542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1371542</guid><dc:creator><![CDATA[riot.84]]></dc:creator><pubDate>Mon, 24 Sep 2007 11:33:50 GMT</pubDate></item></channel></rss>