Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: C++ Return SDL_Rect vanuit class.  (gelezen 1171 keer)

Offline JV.com

  • Lid
C++ Return SDL_Rect vanuit class.
« Gepost op: 2010/06/12, 12:26:59 »
Hallo iedereen.

Ik ben bezig met een SDL project. Nu heb ik een probleempje met een een SDL_Rect. Ik heb namelijk deze Class:

#include <SDL/SDL.h>

class Ball
{
public:
static Ball* GetInstance();
void DeleteInstance();
int InitBall();
SDL_Surface* ReturnBallImage();
SDL_Rect ReturnBallPosition();
void MoveBall(int x,int y);
protected:
private:
SDL_Rect BallPosition;
SDL_Surface* Temp;
SDL_Surface* BallImage;
static Ball* Instance;
Ball();
~Ball(){};
};

En ik heb deze functie in de Ball Class om de SDL_Rect terug te geven:
SDL_Rect Ball::ReturnBallPosition()
{
return this->BallPosition;
}
En in deze functie wil ik graag de SDL_Rect gebruiken:
void Graphics::Draw()
{
this->ObjBall = Ball::GetInstance();
if(this->ObjBall->InitBall() == 0)
{
SDL_BlitSurface(this->ObjBall->ReturnBallImage(),NULL,this->SDLWindow,
this->ObjBall->ReturnBallPosition());
SDL_Flip(this->SDLWindow);
}
else
{
std::cout << "niet gelukt" << std::endl;
}
}

Nu heb ik een SDL tutorial gevolgd en die gaven me de volgende code voor het gebruiken van een SDL_Rect:

SDL_Rect position;
position.x = 0; //were just putting the picture in the top left corner
position.y = 0;// at position 0,0
And finally we place the image in the screens buffer surface and display it.
 
SDL_BlitSurface( compatible_image, NULL, screen, &position ); //put the image on the screen surface
 
SDL_Flip(screen);// send the screen surface to be displayed

Syntax van de Functie SDL_BlitSurface is:
int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);

Nu gaat het mij om de 4e parameter in deze functie:

Als ik het goed begrijp moet dit een verwijzing zijn naar het adres van een SDL_Rect. dus wordt er netjes in de code van de tutorial &position gebruikt. maar als ik mijn functie uitvoer krijg ik deze compiler Error:

Graphics.cpp: In member function ‘void Graphics::Draw()’:
Graphics.cpp:59: error: cannot convert ‘SDL_Rect’ to ‘SDL_Rect*’ for argument ‘4’ to ‘int SDL_UpperBlit(SDL_Surface*, SDL_Rect*, SDL_Surface*, SDL_Rect*)

Nu is mijn vraag hoe kan de functie  ReturnBallPosition mijn SDL_Rect laten returnen en laten verwijzen naar het adres van de SDL_Rect uit mijn classe Ball

Ik hoop dat mijn uitleg hierboven een beetje duidelijk genoeg is.

Alvast bedankt voor jullie hulp!.

JV.com
« Laatst bewerkt op: 2010/06/12, 12:28:30 door JV.com »

Offline muksie

  • Lid
Re: C++ Return SDL_Rect vanuit class.
« Reactie #1 Gepost op: 2010/06/12, 13:54:20 »
Werkt dit niet gewoon:
SDL_BlitSurface( compatible_image, NULL, screen, &this->objBall->ReturnBallPosition() ); //put the image on the screen surface
Eventueel zou je ook je ReturnBallPosition kunnen aanpassen zodat deze meteen een pointer (adres) van de SDL_Rect returned. Iets als
SDL_Rect* Ball::ReturnBallPosition() {
    return &BallPosition;
}

Offline JV.com

  • Lid
Re: C++ Return SDL_Rect vanuit class.
« Reactie #2 Gepost op: 2010/06/12, 14:19:28 »
xxxx
« Laatst bewerkt op: 2020/06/25, 13:05:04 door JV.com »

Re: C++ Return SDL_Rect vanuit class.
« Reactie #3 Gepost op: 2010/06/12, 19:13:45 »
Tenzij je een zéér goede reden hebt, zou een accessor altijd const T* of liever const T& moeten returnen.

- Sey
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net