SDL_Events working in my main function but not in a class

This topic is 2107 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

First post, hooray! I'm trying to call onEvent (a function of my player class) every time I call SDL_PollEvent in my game loop to move my player up when I press W.

Part of player definition.
 void Player::onEvent(SDL_Event Events) { if (events.type == SDL_KEYDOWN) { switch (Events.key.keysym.sym) { case SDLK_w: ySpeed = -maxSpeed; break; } } if (events.type == SDL_KEYUP) { switch (Events.key.keysym.sym) { case SDLK_w: ySpeed = 0; break; } } } 

Part of my main function where onEvent is called.
 while (SDL_PollEvent(&events)) { if (events.type == SDL_QUIT) run = false; player.onEvent(events); } 

I expect my player to move up when I press W but it does not, I am almost certain there is something wrong with onEvent's definition or how I am calling it because changing the above piece of code to the following makes the program run as expected.

 while (SDL_PollEvent(&events)) { if (events.type == SDL_QUIT) run = false; if (events.type == SDL_KEYDOWN) { switch (events.key.keysym.sym) { case SDLK_w: player.ySpeed = -player.maxSpeed; break; } } if (events.type == SDL_KEYUP) { switch (events.key.keysym.sym) { case SDLK_w: player.ySpeed = 0; break; } } } 

Sorry for goofing up any terminology, I'm pretty new to c++.

Share on other sites
Use a debugger to see what happens when you call onEvent.

Share on other sites
Is this your actual code? You seem to have a variable named events and another variable named Events. You probably want the events to be Events.

Share on other sites
Events instead of events in the function onEvent.

Share on other sites
There's still the question of why events' was a valid identifier in that context. It looks like it shouldn't be.

Share on other sites
Problem solved, I made stupid mistake, I was using 'events' in my onEvent function instead of 'Events', thanks heaps for pointing that out.

(Note to self: Never code at 1 am ever again!)

Share on other sites
What is events' in that context? Chances are the answer to that question reveals some other problem with your code.

Share on other sites
The non-capital events was valid because I had left accidentally left a variable that I wasn't using any more in my Player class definition, if I had remembered to delete that I wouldn't have had a problem, anyway, thanks a lot!