cannot convert 'SDL_DisplayMode' to 'SDL_DisplayMode* |
cannot convert 'SDL_DisplayMode' to 'SDL_DisplayMode* |
Brian Puthuff
Guest
|
Your .H function declaration (prototype) for gobot and your .CPP function need to have the same arguments and return types.If your goal is to pass horizontal and vertical and dm into the function, and then store the display mode's width and height data into horizontal and vertical respectively, then you need to have the function take in pointers to horizontal and vertical. Then in your function definition, deference your pointers and store the values obtained by dm. Hopefully that makes sense.
Code: int horizontal = 0; int vertical = 0; SDL_DisplayMode dm; cout<<"Gobot call:"; gobot(&horizontal, &vertical, &dm); In your .CPP Definition: int gobot( int* horizontal, int* vertical, SDL_DisplayMode* dm )Â Â {Â Â Â Â //SDL_GetDesktopDisplayMode(0, &dm);Â Â Â *horizontal = dm->w;Â Â Â *vertical = dm->h;Â Â Â Â return 0;Â Â } In your .H Declaration int gobot( int* horizontal, int* vertical, SDL_DisplayMode* dm ); On Tue, Feb 7, 2017 at 5:20 PM, speartip wrote:
|
|||||||||||||
|
cannot convert 'SDL_DisplayMode' to 'SDL_DisplayMode* |
speartip
|
I made the exact changes; still getting errors:
.\src\gobot.cpp:15:45: error: 'dm' has not been declared int gobot( int * horizontal, int* vertical, dm ) ^ ..\src\gobot.cpp: In function 'int gobot(int*, int*, int)': ..\src\gobot.cpp:18:18: error: 'dm' was not declared in this scope * horizontal = dm->w; -- Gray Family On Tue, Feb 7, 2017, at 09:11 PM, Brian Puthuff wrote:
|
|||||||||||||||
|
response after code correction |
speartip
|
Deployed with changes; errors persistent:
error:
|
|||||||||||||||||||
|
cannot convert 'SDL_DisplayMode' to 'SDL_DisplayMode* |
Brian Puthuff
Guest
|
int gobot( int * horizontal, int* vertical, &dm )
  {     //SDL_GetDesktopDisplayMode(0, &dm);     *horizontal = dm->w;     *vertical = dm->h;    return 0;  } Should be: int gobot( int * horizontal, int* vertical, SDL_DisplayMode* dm ) {     //SDL_GetDesktopDisplayMode(0, &dm);     *horizontal = dm->w;     *vertical = dm->h;    return 0;  } That third argument is incorrect on that first version. The definition arguments need to match the declaration arguments. That third argument is a pointer to a structure. The only time you pass &dm is when you actually call the function. Not during declaration and definition. On Feb 8, 2017 4:08 PM, "speartip" wrote:
|
|||||||||||||
|
solved and follow up |
speartip
|
Thank you Brian this is what it should have been. Always match your declarations and definitions!
Should be: Code: int gobot( int horizontal, int vertical, SDL_DisplayMode* dm ) Works fine now. I did revert back to using pass by reference which simplified things a bit even though I know pointers are perfectly valid. So by using &var I could change the val in the subroutine without making a copy and keep the most up to date version in main. Thank you![/code] |
|||||||||||
|
thx |
speartip
|
Thanks for solving that so quickly.ST
|
|||||||||||
|