Hallo,
bin jetzt seit ner guten halbe Stunde genervt mit dem dämlichen Problem der "Headerfileabhängigkeit" und hab nun keine Ahnung mehr,was ich machen soll.
Es geht um folgendes:
ich habe ein headerfile X, das die header a,b,c inkludiert. ebenso inkludiert jeder header a,b,c den header X. in a,b,c sind klassen definiert, die in der klasse vom header X verwendet werden. nun krig ich die tolle fehlermeldung, dass klasse c_a, c_b, c_c nicht deklariert ist, obwohl sie es ist.
habe sowohl diese externen include guards als auch die normalen verwendet und es hilft einfach nichts. was kann man denn noch machen, um das zu beheben?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#ifndef CGRAPHICDEVICE_H
#define CGRAPHICDEVICE_H
#include <vector>
#include <algorithm>
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment( lib, "d3d9.lib" )
#pragma comment( lib, "d3dx9.lib" )
#ifndef SCOLOR_H
#include "SColor.h"
#endif
#ifndef CTEXTURE_H
#include "CTexture.h"
#endif
#ifndef CSPRITE_H
#include "CSprite.h"
#endif
class CGraphicDevice
{
private:
LPDIRECT3D9 _d3d;
LPDIRECT3DDEVICE9 _d3ddevice;
std::vector<CSprite*> _sprites;
std::vector<CTexture*> _textures;
//std::vector<CSprite*> _renderSprites; // sprites to be rendered in the frame
public:
CGraphicDevice( HWND Window, int WindowWidth, int WindowHeight, bool Fullscreen );
~CGraphicDevice();
const CTexture* GetTexture( const char* Filename );
void RemoveTexture( const CTexture* Texture );
//const CSprite* AddSprite( const CTexture* Texture );
//void RemoveSprite( const CSprite* Sprite );
void Render();
};
#endif
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#ifndef CTEXTURE_H
#define CTEXTURE_H
#ifndef CGRAPHICDEVICE_H
#include "CGraphicDevice.h"
#endif
class CTexture
{
private:
const char* _filepath;
IDirect3DTexture9* _texture;
D3DSURFACE_DESC _surface;
public:
CTexture( const char* FilePath, IDirect3DTexture9* Texture ) :
_filepath( FilePath ), _texture( Texture )
{
_texture->GetLevelDesc( 0, &_surface );
} // end Konstructor
~CTexture()
{
_texture->Release();
}
const char* GetFilePath() const { return _filepath; }
const IDirect3DTexture9* GetD3DTexture() const{ return _texture; }
const int GetWidth() const{ return _surface.Width; }
const int GetHeight() const{ return _surface.Height; }
inline bool operator==( const CTexture& param ){ return _filepath == param.GetFilePath(); }
};
#endif
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef CSPRITE_H
#define CSPRITE_H
#ifndef CGRAPHICDEVICE_H
#include "CGraphicDevice.h"
#endif
class CSprite
{
private:
const CTexture* _texture;
ID3DXSprite* _sprite;
int _layer;
public:
CSprite( ID3DXSprite* Sprite, const CTexture* Texture ) : _sprite( Sprite ), _texture( Texture ){}
~CSprite()
{
_sprite->Release();
}
void Render();
/*inline bool IsVisible();
inline float GetScaleX();
inline float GetScaleY();
inline float GetPositionX();
inline float GetPositionY();
inline float GetWidth();
inline float GetHeight();
inline int GetColorRed();
inline int GetColorGreen();
inline int GetColorBlue();
inline int GetColorAlpha();
inline int GetLayer();
void SetPosition( float X, float Y );
void SetScale( float ScaleX, float ScaleY );
void SetColor( int Red, int Green, int Blue, int Alpha = 255 );
void SetLayer( int Layer );*/
};
#endif
|
als fehlermeldung:
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\cgraphicdevice.h(27) : error C2065: 'CSprite': nichtdeklarierter Bezeichner
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\cgraphicdevice.h(27) : error C2059: Syntaxfehler: '>'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\cgraphicdevice.h(39) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(11) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(18) : error C2065: 'Texture': nichtdeklarierter Bezeichner
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(18) : error C3861: "_texture": Bezeichner wurde nicht gefunden.
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(18) : error C2143: Syntaxfehler: Es fehlt ',' vor '{'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(18) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(20) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(22) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.h(40) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(5) : error C2653: 'CSprite': Keine Klasse oder Namespace
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(14) : error C2143: Syntaxfehler: Es fehlt ',' vor ')'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(16) : error C2065: 'src': nichtdeklarierter Bezeichner
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(16) : error C2065: 'color': nichtdeklarierter Bezeichner
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(16) : error C2143: Syntaxfehler: Es fehlt ',' vor ')'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(17) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(18) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
1>c:\spieleprogrammierung\projekte\h3 blob engine\h3 blob engine\csprite.cpp(18) : fatal error C1004: Unerwartetes Dateiende gefunden.
1>Code wird generiert...
1>Kompilieren...
1>CGraphicDevice.cpp
1>Code wird generiert...
1>Kompilieren...
1>WinMain.cpp
1>IDevice.cpp
1>Code wird generiert...
1>Das Buildprotokoll wurde unter "file://c:\Spieleprogrammierung\Projekte\H3 Blob Engine\H3 Blob Engine\Debug\BuildLog.htm" gespeichert.
1>H3 Blob Engine - 20 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
krigs nicht hin, dass er es mir kompiliert :/