'CScreen' : 'class' type redefinition

0

Hi,

są dane 2 pliki nagłówkowe:

screen.h

[code]
#include <ddraw.h>

class CScreen
{
private:
LPDIRECTDRAW lpDD;
LPDIRECTDRAW7 lpDD7;
LPDIRECTDRAWSURFACE7 lpDDSScreen;
void DestroyDD(void);

protected:
	LPDIRECTDRAWSURFACE7 lpDDSBuffer;

public:

	CScreen(void);
	~CScreen(void);

	bool InitDD(int nHeight, int nWidth, int nBits);
	void RenderDD(DWORD dwColor);
	void ClearDD(DWORD dwColor);
	void DrawSimpleTextDD(int nTextX, int nTextY, DWORD dwTextColor, int nBkMode, DWORD dwBkColor, HFONT hFont, LPCSTR lpText);

};
[/code]
i drugi text.h

[code]
#include "screen.h"

class CText: protected CScreen
{
public:
HFONT hFont;
LPCSTR lpText;
int xLeft;
int yTop;
int xRight;
int yBottom;
int nBkMode;
UINT uFormat;
DWORD dwTextColor;
DWORD dwBkColor;

	void Update(void);

};
[/code]

Oczywiście są też dwa pliki funkcjami.

Problem się pojawia gdy próbuje to wszystko skompilować - wyskakuje błąd "error C2011: 'CScreen' : 'class' type redefinition". O co w tym wszystkim chodzi?

0

Spróbuj złapać definicję klasy w #ifdef i #endif raczej to nic nie da, ale może warto spróbować (tak jakoś mi ta myśl przeleciała przez piąty neuron na prawo od ucha:p). Nie chce mi się tego w kompilator wrzucać, ale spróbuj (raczej nic nie da.. :().

0

Rzeczywiści nie dało :(

0

zamiast

class CText: protected CScreen
sprobuj
class CText: public CScreen, pewnie tez nie pomoze ;-) ale warto sprobowac.

0
#ifndef CLASS_H_
#define CLASS_H_

class CScreen{} //czy jak tam sie zwie ;p

#endif
0

btw: w każdym pliku .h dawaj następujące linijki:

#ifndef TWOJA_NAZWA_PLIKU_H
#define TWOJA_NAZWA_PLIKU_H

// tutaj wstawiasz całą treść

#endif

unikniesz wielu błędów podobnych do:"xxx redefinition"

o k...., Qyon - masz rację, zaznaczyło mi się, jako nieprzeczytane, to napisałem ;)

0

btw. odpowiedź jest do posta z 2004 roku :)

0

hehehe, nie zauwazylem nawet :-D

a dzisiaj znowu szukam tego samego :-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1