Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

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

Auteur Topic: C++ Return SDL_Rect vanuit class.  (gelezen 1278 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