Zugriff vón einer auf andere Klasse
-
Hallo!
Ich weiß nciht ob das hierher gehört, wusste abetr nich wohin sonst. Und weils um Pong geth naja, gegebenenfalls verschieben.
Also mein Problem:
Ich progge zur zeit Pong:
Klasse cBall: muss auf auf cPaddle zugreifen
Klasse cPaddle muss auf cBall zugreifenIch habs schon versucht die Headerdateien jeweils einzubinden, aber da entsteht ja natürlich ne Endlosschleife:
DAtei Ball.h:
#include "Paddle.h"
Datei Paddle.h
#include "Ball.h"
Endlosschleife, logisch.
Ich habs auch schon mit extern class versucht:
DAtei Ball.h:
extern class cPaddle;
Datei Paddle.h
extern class cBall;
Da hat er aber auch nen Compilerfehler:
void cBall::SavePaddle(cPaddle* Pad) { this->m_Paddle = Pad; }; void cBall::Update() { int PadMinX = m_Paddle->GetMinX(); // <- Fehler zeigt hier druaf int PadMaxX = m_Paddle->GetMaxX(); int PadMinY = m_Paddle->GetMinY(); int PadMaxY = m_Paddle->GetMaxY(); this->m_XPos += this->XDir; this->m_YPos += this->YDir; if(m_XPos > PadMinX && m_XPos < PadMaxX) { if(m_YPos + m_Ball.GetHeight() / 2 > PadMinX && m_YPos + m_Ball.GetWidth < PadMaxX) YDir = -YDir; } /// kommt noch restlicher code };
Es kommt diese Fehlermeldung hier:
C:\Eigene Dateien\Maxi\C++\Pong\Ball.cpp(76) : error C2027: Verwendung des undefinierten Typs "cPaddle"
Was kannm man da machen?
-
Du brauchst Include-Guards:
Einfach folgendes in die Paddle-Header reinschreiben:#ifndef PADDLE_HEADER_INCLUDED
#define PADDLE_HEADER_INCLUDED.
.
.hier der bisherige Code aus der Headerdatei
#endif
damit stellst Du sicher, daß der Header nur einmal eingebunden wird. Beim Ball mußt Du natürlich das selbe machen.
Falls Du noch Fragen hast such mal im C++ Forum nach Include guards, dürfte es massig Infos dazu geben.MfG Jester
-
#ifndef BLA #define BLA
eingebaut?
-
OK, so funzts
Gruß, Maxi