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 zugreifen

    Ich 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


Anmelden zum Antworten